Linux系統(tǒng)rsyslogd占用內(nèi)存過(guò)高的問(wèn)題排查及解決
一、問(wèn)題:企業(yè)內(nèi)存飆高,程序經(jīng)常卡死
企業(yè)運(yùn)維定位需要經(jīng)常清除緩存,清理RAM緩存和交換空間的命令行示例:
執(zhí)行:echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'
二、排查過(guò)程
2-1、 看下系統(tǒng)占用情況按內(nèi)存排序
top 然后點(diǎn)下 Shift + M 鍵

2-2、 獲取到實(shí)際占用內(nèi)存的進(jìn)程
ps -ef | grep <pid>
pid為進(jìn)程id,上一步top的第一列
[root@fpserver1 ~]# ps -ef | grep 22408 root 14975 13128 0 17:24 pts/4 00:00:00 grep --color=auto 22408 root 22408 1 1 8月13 ? 04:39:30 java -server -Xmx8192m -Xms8192m -XX:+PrintGCDetails -Xloggc:/data/logs/xx-service_gc_log.out -XX:+PrintGCDateStamps -jar -Djava.io.tmpdir=/data/dkh-xx-service-dkh-2/tmpdir -DMODE= -DDOMAIN=xx.xx.com -DAPP_HOME=/data -DAPP_NAME=xx-service -DINNER_IP=10.101.2.42 -DEUREKA_DOMAIN=http://registerserver-xx.com:8889/eureka -DDEPLOY_SERVICE_IP=INNER_IP -Djava.security.egd=file:/dev/./urandom xx-service.jar --server.port=9123 --eureka.client.serviceUrl.defaultZone=http://xxx:8889/eureka,http://xxx:8889/eureka --spring.profiles.active=dkh [root@fpserver1 ~]# ps -ef | grep 25700 root 25700 1 0 7月12 ? 09:27:04 //bin/java -Djava.util.logging.config.file=/data/tomcat_solr/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /data/tomcat_solr/bin/bootstrap.jar:/data/tomcat_solr/bin/tomcat-juli.jar -Dcatalina.base=/data/tomcat_solr -Dcatalina.home=/data/tomcat_solr -Djava.io.tmpdir=/data/tomcat_solr/temp org.apache.catalina.startup.Bootstrap start root 31449 13128 0 17:39 pts/4 00:00:00 grep --color=auto 25700
xx-service 服務(wù)可以看到Xms8192m,top中RES為7.1g,占用正常
2-3、 內(nèi)存情況:
free -h

發(fā)現(xiàn)buff/cache 占用很高,而且清除后還會(huì)持續(xù)上升,企業(yè)運(yùn)維定位清除緩存就是清除buffer/cache的數(shù)據(jù)
注:在 Linux 系統(tǒng)中,buff/cache 是指系統(tǒng)內(nèi)存中用于緩存文件和緩沖區(qū)的部分,并不是直接由單個(gè)進(jìn)程占用的。它是系統(tǒng)內(nèi)核管理的資源,用于提升文件系統(tǒng)的性能和減少磁盤 I/O。
使用hcache排查buffer/cache 過(guò)高是由那幾個(gè)進(jìn)程引起
1、hcache的下載地址
github地址:https://github.com/silenceshell/hcache
2、 hcache的使用方式
當(dāng)前下載完對(duì)應(yīng)的hcache后,則直接是一個(gè)對(duì)應(yīng)的 bin文件,此時(shí)直接將對(duì)應(yīng)的bin文件進(jìn)行 chmod 授權(quán)后即可使用。將該bin文件設(shè)置為可執(zhí)行文件
chmod 755 hcache
(可選)將該hcache移動(dòng)到usr的bin目錄中,使其可以被全局調(diào)用該命令
mv hcache /usr/local/bin/
3、 使用hcache查看buffer/cache的使用情況
[root@fpserver1 kpc]# ./hcache -top 10 +-------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+-----------+---------+ | Name | Size (bytes) | Pages | Cached | Percent | |-------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+-----------+---------| | /data/xxx/goldenbooksdk/libgoldenbooksdk_parser.so | 76748866 | 18738 | 18738 | 100.000 | | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-0000000000053dee-00061de26ef5d494.journal | 67108864 | 16384 | 16384 | 100.000 | | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-0000000000038493-00061d6c1149190a.journal | 67108864 | 16384 | 16384 | 100.000 | | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-0000000000000001-00061c8ccc75efd1.journal | 67108864 | 16384 | 16384 | 100.000 | | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-000000000000dfed-00061cc23feafba1.journal | 67108864 | 16384 | 16384 | 100.000 | | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-00000000000a7c76-00061f453289495e.journal | 67108864 | 16384 | 16384 | 100.000 | | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-000000000008b819-00061ecf996ae19f.journal | 67108864 | 16384 | 16384 | 100.000 | | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-00000000000c3a08-00061fbba240fa34.journal | 67108864 | 16384 | 16384 | 100.000 | | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-0000000000099ba7-00061f0a53131362.journal | 67108864 | 16384 | 16384 | 100.000 | | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-0000000000061b9e-00061e1df90b2163.journal | 67108864 | 16384 | 16384 | 100.000 | +-------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+-----------+---------+
3-1、清除緩存后使用情況
[root@fpserver1 kpc]# ./hcache -top 10 +-------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+-----------+---------+ | Name | Size (bytes) | Pages | Cached | Percent | |-------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+-----------+---------| | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-000000000001bed8-00061cfb50fc93b2.journal | 67108864 | 16384 | 16384 | 100.000 | | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-0000000000053dee-00061de26ef5d494.journal | 67108864 | 16384 | 16384 | 100.000 | | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-0000000000038493-00061d6c1149190a.journal | 67108864 | 16384 | 16384 | 100.000 | | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-0000000000000001-00061c8ccc75efd1.journal | 67108864 | 16384 | 16384 | 100.000 | | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-000000000004606f-00061da6f6ba3df3.journal | 67108864 | 16384 | 16384 | 100.000 | | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-000000000000dfed-00061cc23feafba1.journal | 67108864 | 16384 | 16384 | 100.000 | | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-00000000000a7c76-00061f453289495e.journal | 67108864 | 16384 | 16384 | 100.000 | | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-000000000007da61-00061e94285f61a3.journal | 67108864 | 16384 | 16384 | 100.000 | | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-000000000006fc6c-00061e58f9507585.journal | 67108864 | 16384 | 16384 | 100.000 | | /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-000000000002a0b3-00061d33e16097b9.journal | 67108864 | 16384 | 16384 | 100.000 | +-------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+-----------+---------+
4、 獲取高占用的進(jìn)程信息
可以看到/run/log/journal的文件總是占用共享內(nèi)存
[root@fpserver1 kpc]# lsof /data/xxx/goldenbooksdk/libgoldenbooksdk_parser.so
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 22408 root mem REG 253,0 76748866 270080875 /data/xxx/goldenbooksdk/libgoldenbooksdk_parser.so
root@fpserver1 kpc]# lsof /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-000000000001bed8-00061cfb50fc93b2.journal
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 8400 root mem REG 0,20 67108864 191144463 /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-000000000001bed8-00061cfb50fc93b2.journal
rsyslogd 8400 root 26r REG 0,20 67108864 191144463 /run/log/journal/60f9704648984835bdf7aacaa672545b/system@845d4f795c124ae395dae474a5bf383c-000000000001bed8-00061cfb50fc93b2.journal
通過(guò)lsof命令識(shí)別占用大量共享內(nèi)存的進(jìn)程。例如,rsyslogd服務(wù)可能占用大量?jī)?nèi)存,需要進(jìn)一步排查。那下面就排查下rsyslogd占用系統(tǒng)內(nèi)存的問(wèn)題
三、 總結(jié)
文章強(qiáng)調(diào)了運(yùn)維人員在處理系統(tǒng)性能問(wèn)題時(shí),需要對(duì)內(nèi)存和緩存進(jìn)行有效管理。通過(guò)使用命令行工具和特定的系統(tǒng)命令,可以識(shí)別和解決內(nèi)存占用過(guò)高的問(wèn)題。同時(shí),介紹了hcache這一工具,幫助運(yùn)維人員更精確地定位和分析內(nèi)存使用情況。
以上就是Linux系統(tǒng)rsyslogd占用內(nèi)存過(guò)高的問(wèn)題排查及解決的詳細(xì)內(nèi)容,更多關(guān)于Linux rsyslogd占用內(nèi)存過(guò)高的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
在APACHE環(huán)境下配置下載服務(wù)器的注意事項(xiàng)
這篇文章主要介紹了在APACHE環(huán)境下配置下載服務(wù)器的注意事項(xiàng),需要的朋友可以參考下2016-08-08
CentOS 6.2 下升級(jí)安裝為MySQL 5.5的方法
使用系統(tǒng)CentOS 6.2本來(lái)已經(jīng)系統(tǒng)自帶安裝了mysql 5.1,但是奈何5.1不支持utf8mb4字符集,只能想辦法將Mysql升級(jí)到5.52014-11-11
Linux中利用sudo進(jìn)行賦權(quán)的方法詳解
sudo的目的:為非根用戶授予根用戶的權(quán)限,下面這篇文章主要給大家介紹了關(guān)于Linux中利用sudo進(jìn)行賦權(quán)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01
linux系統(tǒng)下載依賴部署環(huán)境出現(xiàn)死鎖問(wèn)題及解決
在Linux下載依賴失敗時(shí),可刪除鎖文件(如pip.lock)后輸入三行指令(如清理緩存、更新包列表、重新安裝)解決,需根據(jù)實(shí)際環(huán)境調(diào)整命令,并注意鎖文件刪除可能影響依賴版本一致性2025-09-09
在Debian系的Linux中編譯并安裝ixgbe驅(qū)動(dòng)的教程
這篇文章主要介紹了在Linux中編譯并安裝ixgbe驅(qū)動(dòng)的教程,采用bash shell、適用于Debian、Ubuntu等各種基于Debian的Linux系統(tǒng),需要的朋友可以參考下2015-03-03
LuManager圖文安裝使用教程和創(chuàng)建MysqL快速建站基本教程
這篇文章主要介紹了LuManager圖文安裝使用教程和創(chuàng)建MysqL快速建站基本教程,需要的朋友可以參考下2016-04-04

