Linux系列 优化内存占用
本文最后更新于 2024年10月25日, 如有失效请评论区留言。

前言

偶尔查看服务器运行状态时, 发现内存占用竟然高达90%, 而实际情况并没有安装多少程序啊. 于是决定优化一波,救救我这可怜的内存.

后截的图

后截的图,不过占用也很高了

执行top命令按shift + m 按内存使用大小排序, 查看下当前内存占用情况

image-20241024103746049

优化系统日志

查询第一个进程, 得知systemd-journalsystemd 的一个重要组成部分,用于管理和存储系统日志。可以通过调整日志级别、存储配置和使用过滤选项等方式来优化其性能。

1. 调整日志存储配置

journald 默认会将日志同时存储在内存和磁盘上。你可以通过修改配置文件 /etc/systemd/journald.conf 来调整日志存储行为,减少内存占用。

修改 /etc/systemd/journald.conf

打开配置文件:

sudo vi /etc/systemd/journald.conf

添加以下内容:

# 将日志存储在磁盘上,而不是内存中
Storage=persistent

# 设置日志的最大存储大小
SystemMaxUse=10M  # 设置最大使用空间为10MB

# 设置单个日志文件的最大大小
SystemMaxFileSize=1M  # 设置单个文件最大大小为1MB

# 设置日志存储的总大小限制
SystemKeepFree=100M  # 至少保持100MB的空闲空间

# 设置日志存储的天数限制
SystemMaxAge=30d  # 最多保存30天的日志

# 设置日志存储的文件数量限制
SystemMaxFiles=10  # 最多保存10个日志文件

2. 清理日志文件

如果日志文件已经积累了很多,可以手动清理日志文件,释放内存空间:

sudo journalctl --vacuum-time=7d  # 清理7天以前的日志

或者清除所有日志:

sudo journalctl --flush
sudo journalctl --vacuum-size=10M  # 清理超过10MB的日志

3. 调整日志级别

减少不必要的日志记录可以降低日志的存储需求。可以通过修改应用程序的日志级别来减少日志输出。

1. 修改全局日志级别

打开配置文件:

sudo vi /etc/systemd/journald.conf

添加或修改以下内容:

# 添加以下行来设置全局日志级别
SyslogLevelPriority=notice

在这个例子中,SyslogLevelPriority 设置为 notice,这意味着只有 notice 及以上的日志级别(如 warning, err, crit 等)会被记录。

可以根据需要选择以下日志级别之一:

  • emerg(紧急)
  • alert(警告)
  • crit(严重)
  • err(错误)
  • warning(告警)
  • notice(通知)
  • info(信息)
  • debug(调试)

2.修改特定服务日志级别

示例

假设你有一个名为 example.service 的服务,并希望为这个服务设置日志级别:

打开服务配置文件

sudo vi /etc/systemd/system/example.service

[Service] 部分添加日志级别配置

[Service]
ExecStart=/usr/bin/example-service --log-level=INFO

# 添加以下行来设置日志级别
SyslogLevelPriority=notice

4. 监控日志使用情况

可以定期检查日志使用情况,确保日志不会占用过多的资源:

sudo journalctl --disk-usage  # 查看磁盘使用情况
sudo journalctl --list-boots  # 查看引导日志

5. 重启 journald 服务

每次修改配置文件后,需要重新启动 journald 服务以使更改生效:

sudo systemctl daemon-reload
sudo systemctl restart journald # 重启

如果报错Failed to restart journald.service: Unit journald.service not found.通常是因为 systemd 中的服务名称并不是 journald.service。实际上,systemd 的日志服务通常被称为 journal.servicesyslog.service,具体取决于你的系统配置。

解决方法

1.确认服务名称

首先,我们需要确认正确的服务名称。可以使用以下命令来查找与 journalsyslog 相关的服务:

systemctl list-unit-files | grep journal
systemctl list-unit-files | grep syslog

这样可以列出所有与 journalsyslog 相关的服务。

image-20241024110409258

2.修改名称再次重启

sudo systemctl restart systemd-journald.service

再次查看内存使用情况, 已经下降接近10%

image-20241024111044462

原创声明
本文由 Twist 于2024年10月24日 发表在 柯基屁屁
如未特殊声明,本站所有文章均为原创;你可以在保留作者及原文地址的情况下转
转载请注明:Linux系列 优化内存占用 | 柯基屁屁
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇