在使用寶塔面板升級MySQL到5.7.29版本時,總是不成功。
查看升級過程發現是內存不足導致編譯過程無法完成。在編譯到building cxx object sql/cmakefiles/sql.dir/item_geofunc.cc.o這一步時無法繼續。
查看內存占用時,發現rsyslogd內存占用很高。
0|1解決方法(限制服務內存使用率)
1、修改rsyslogd服務配置文件
在Service配置中添加MemoryAccounting=yes,MemoryMax=80M,MemoryHigh=8M三項如下所示。
通常情況下rsyslogd大小只有5M,所以將內存上限設置為8M,然后將絕對內存限制為80M。
2、重啟服務
0|1根本原因
查看rsyslog輸出的日志/var/log/
| 路徑 | 描述 |
|---|---|
| /var/log/messages | 服務信息日志(記錄linux操作系統常見的服務信息和錯誤信息) |
| /var/log/secure | 系統的登陸日志(記錄用戶和工作組的變化情況,是系統安全日志,用戶的認證登陸情況 |
| /var/log/maillog | 郵件日志 |
| /var/log/cron | 定時任務 |
| /var/log/boot.log | 系統啟動日志 |
發現/var/log/messages有幾個G的日志。查看日志內容發現rsyslog把Journal的log都進行的輸出和匯總。
當容器越多是,log也就會也多,內存占用也就越多。
同時也可能導致systemd-journald內存占用過高
1、修改Journal的配置/etc/systemd/journald.conf
把Storage改為none,如下
2、重啟生效
3、Storage選項擴展
通過查看man手冊,#man 5 journald.conf 你會發現,Storage=的值可以是volatile,persistent, autoandnone,但是,默認的是auto,
volatile代表日志只存在內存中,即/run/log/journal/persistent代表日志只存在磁盤中,即/var/log/journal/auto代表日志存在磁盤中,或者內存中,這個取決於你是否創建/var/log/journal/目錄!!這個也算是一個坑吧,看來大家都需要手動mkdir -p /var/log/journal/,systemctl restart systemd-journald來解放自己的內存了!!!none,表示,日志不保留,全部drop,只有當你決定不使用systemd-journald的時候,你可以使用!
