1

就我而言,它是“rsyslogd”,

我发现它消耗了高达170M的内存,这太多了,

我检查了它位于 /etc/rsyslog.conf 的配置文件

然后检查其中写入的每个文件,

但徒劳无功。

我如何查找它当前正在操作的文件并查看里面发生了什么?

[root@slvdb2 log]# lsof -p `pidof rsyslogd`
COMMAND   PID USER   FD   TYPE             DEVICE    SIZE       NODE NAME
rsyslogd 1965 root  cwd    DIR                8,1    4096          2 /
rsyslogd 1965 root  rtd    DIR                8,1    4096          2 /
rsyslogd 1965 root  txt    REG                8,1  259072    2818209 /sbin/rsyslogd
rsyslogd 1965 root  mem    REG                8,1  142176    1097807 /lib64/ld-2.8.so
rsyslogd 1965 root  mem    REG                8,1 1804136    1097817 /lib64/libc-2.8.so
rsyslogd 1965 root  mem    REG                8,1  143096    1097871 /lib64/libpthread-2.8.so
rsyslogd 1965 root  mem    REG                8,1   88976    1097890 /lib64/libz.so.1.2.3
rsyslogd 1965 root  mem    REG                8,1   93416    1097834 /lib64/libgcc_s-4.3.0-20080428.so.1
rsyslogd 1965 root  mem    REG                8,1   53448    1097874 /lib64/librt-2.8.so
rsyslogd 1965 root  mem    REG                8,1   23208    1098015 /lib64/libdl-2.8.so
rsyslogd 1965 root  mem    REG                8,1   11368    4720595 /usr/lib64/rsyslog/imuxsock.so
rsyslogd 1965 root  mem    REG                8,1   23560    4720591 /usr/lib64/rsyslog/imklog.so
rsyslogd 1965 root  mem    REG                8,1   57808    1097853 /lib64/libnss_files-2.8.so
rsyslogd 1965 root  mem    REG                8,1   19504    4720596 /usr/lib64/rsyslog/lmnet.so
rsyslogd 1965 root  mem    REG                8,1    8584    4720598 /usr/lib64/rsyslog/lmtcpclt.so
rsyslogd 1965 root    0u  unix 0xffff880008a31c40            3909712 /dev/log
rsyslogd 1965 root    1w   REG                8,1     435    4014282 /var/log/messages
rsyslogd 1965 root    2w   REG                8,1 7723905    4014355 /var/log/secure
rsyslogd 1965 root    3w   REG                8,1       0    4014356 /var/log/maillog
rsyslogd 1965 root    4w   REG                8,1   58959    4014359 /var/log/cron
rsyslogd 1965 root    5w   REG                8,1       0    4014357 /var/log/spooler
rsyslogd 1965 root    6w   REG                8,1       0    4014358 /var/log/boot.log
rsyslogd 1965 root    7r   REG                0,3       0 4026531849 /proc/kmsg

没有从上述文件中得到任何线索..

4

7 回答 7

7
lsof -p `pidof rsyslogd`
于 2009-05-27T17:13:34.350 回答
6

lsof 和 fuser 一样非常方便。

于 2009-05-27T17:08:59.803 回答
3

您断言 rsyslogd 正在使用“太多”内存 (170MB)。与什么相比太多了?

首先,从阅读这篇文章开始。很可能 rsyslogd 没有使用您想象的那么多内存。如果你仍然认为它是,去了解rsyslogd。您可能还想浏览源代码

完成更多分析后,您可能希望与 rsyslogd 开发人员展开对话,他们可能更适合回答您的问题。

顺便说一句,多次问同一个问题是一种糟糕的形式——你最好编辑原始问题

就个人而言,鉴于您的主要问题似乎是“网站性能”(可能是网站),我建议先查看为网站本身提供服务的软件,然后再关注数百万使用的关键操作系统进程服务器每天。是的,问题可能是 rsyslogd 正在尝试将日志消息写入需要轮换的大文件,但它更有可能是为每个请求动态生成的内容,当它可以(并且应该)被缓存时。

于 2009-05-27T17:48:28.303 回答
2

lsof -p <pid>应该做的伎俩。

于 2009-05-27T17:12:34.353 回答
1

您可以了解该进程已在其中打开的文件/proc/[pid_of_process]/fd/

于 2009-05-27T17:13:02.620 回答
1

应该做的伎俩:

/usr/sbin/lsof | grep rsyslogd
于 2009-05-27T17:20:08.363 回答
0

如果您想“查看内部”流程并查看“发生了什么”,您将需要使用类似 strace 的东西。

于 2009-05-27T17:13:39.093 回答