前言
偶尔查看服务器运行状态时, 发现内存占用竟然高达90%, 而实际情况并没有安装多少程序啊. 于是决定优化一波,救救我这可怜的内存.
后截的图,不过占用也很高了
执行top
命令按shift + m
按内存使用大小排序, 查看下当前内存占用情况
优化系统日志
查询第一个进程, 得知systemd-journal
是 systemd
的一个重要组成部分,用于管理和存储系统日志。可以通过调整日志级别、存储配置和使用过滤选项等方式来优化其性能。
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.service
或 syslog.service
,具体取决于你的系统配置。
解决方法
1.确认服务名称
首先,我们需要确认正确的服务名称。可以使用以下命令来查找与 journal
或 syslog
相关的服务:
systemctl list-unit-files | grep journal
systemctl list-unit-files | grep syslog
这样可以列出所有与 journal
或 syslog
相关的服务。
2.修改名称再次重启
sudo systemctl restart systemd-journald.service
再次查看内存使用情况, 已经下降接近10%