Linux系统中rsyslogd占用内存过高的原因与优化方法

淦出一番成就 2024-08-30 17:44:04电脑知识
175

在现代Linux系统中,日志服务扮演着至关重要的角色,而rsyslogd则是其中不可或缺的一部分。它负责收集和转发系统日志,帮助管理员监控和维护系统的健康状态。然而,有时rsyslogd可能会出现内存占用过高的问题,这不仅会影响系统的性能,还可能导致更严重的系统故障。本文将深入探讨rsyslogd内存占用过高的常见原因,并提供一系列有效的排查和解决方法,帮助系统管理员和用户解决这一问题。

一、问题:企业内存飙高,程序经常卡死

企业运维定位需要经常清除缓存,清理RAM缓存和交换空间的命令行示例:

执行:echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'

二、排查过程

2-1、 看下系统占用情况按内存排序

top 然后点下 Shift + M 键

Linux系统中rsyslogd占用内存过高的原因与优化方法

2-2、 获取到实际占用内存的进程

ps -ef | grep <pid>

pid为进程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 服务可以看到Xms8192m,top中RES7.1g,占用正常

2-3、 内存情况:

free -h

Linux系统中rsyslogd占用内存过高的原因与优化方法

发现buff/cache 占用很高,而且清除后还会持续上升,企业运维定位清除缓存就是清除buffer/cache的数据

注:在 Linux 系统中,buff/cache 是指系统内存中用于缓存文件和缓冲区的部分,并不是直接由单个进程占用的。它是系统内核管理的资源,用于提升文件系统的性能和减少磁盘 I/O。

使用hcache排查buffer/cache 过高是由那几个进程引起

1、hcache的下载地址

github地址:https://github.com/silenceshell/hcache

2、 hcache的使用方式

当前下载完对应的hcache后,则直接是一个对应的 bin文件,此时直接将对应的bin文件进行 chmod 授权后即可使用。将该bin文件设置为可执行文件

chmod 755 hcache

(可选)将该hcache移动到usr的bin目录中,使其可以被全局调用该命令

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、 获取高占用的进程信息

可以看到/run/log/journal的文件总是占用共享内存

[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

通过lsof命令识别占用大量共享内存的进程。例如,rsyslogd服务可能占用大量内存,需要进一步排查。那下面就排查下rsyslogd占用系统内存的问题

三、 总结

文章强调了运维人员在处理系统性能问题时,需要对内存和缓存进行有效管理。通过使用命令行工具和特定的系统命令,可以识别和解决内存占用过高的问题。同时,介绍了hcache这一工具,帮助运维人员更精确地定位和分析内存使用情况。

通过本文的介绍,我们详细了解了Linux系统中rsyslogd内存占用过高的常见原因及其排查和解决方法。从配置优化、日志过滤到问题诊断,每一步都提供了具体的操作步骤和实用建议。掌握这些方法不仅能有效提升系统的性能和稳定性,还能帮助我们更好地理解和管理rsyslogd服务。希望本文的内容能够为广大Linux用户和系统管理员提供有价值的参考,从而更加高效地解决rsyslogd相关的内存问题。

Linux rsyslogd
THE END
ZhanShen
把烦恼扔进夕阳里,和星星一起沉沦。

相关推荐

Linux系统中查找文件命令(find)的 7 种用法
find命令是Linux中最强大和灵活的查找工具之一,它提供了多种选项和参数,可以帮助用户快速定位所需的文件。本文将详细介绍find命令的7种常见用法,帮助您更好地掌握这一强大...
2024-11-20 电脑知识
158

Linux提示磁盘空间不足怎么办:5种释放磁盘空间的有效方法分享
在Linux操作系统中,磁盘空间不足是一个常见的问题,尤其对于那些频繁进行开发和测试的用户。当磁盘空间不足时,不仅会影响系统的性能,还可能导致系统无法正常运行。本文将分...
2024-11-07 电脑知识
145

详细解析Linux中的awk命令使用方法
awk是一种强大的文本处理工具,它可以用来扫描、格式化和处理文本文件。awk命令以其简洁、灵活和高效的特点,深受广大Linux用户的喜爱。本文将详细解析awk命令的使用方法,包...
2024-11-03 电脑知识
118

哪个Linux发行版被广泛认为是最稳定的?
Linux 作为一种开源的操作系统,拥有众多的发行版,每个发行版都有其独特的特点和优势。一个稳定的 Linux 发行版是确保系统正常运行的关键。本文ZHANID将探讨一些被广泛认为稳...
2024-10-05 电脑知识
125

揭开永久免费Linux服务器的神秘面纱:资源限制和安全风险
Linux作为服务器操作系统的选择越来越受到欢迎。无论是小型企业还是大型跨国公司,都倾向于使用Linux服务器来部署他们的应用程序和服务。然而,“永久免费”的概念总是吸引着...
2024-10-01 站长之家
140

Linux磁盘分区工具之fdisk命令的使用详解
fdisk是Linux系统中一个强大的磁盘分区管理工具,它允许用户查看、创建、修改和删除磁盘分区。本文将深入探讨fdisk命令的使用方法,帮助系统管理员和Linux爱好者更好地理解和...
2024-08-27 电脑知识
124