就我而言,它是“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
没有从上述文件中获得任何线索..
答案 0 :(得分:7)
lsof -p `pidof rsyslogd`
答案 1 :(得分:6)
lsof非常方便,就像热熔器一样。
答案 2 :(得分:3)
你声称rsyslogd正在使用“太多”内存(170MB)。与什么相比太多了?
首先,先阅读article。可能性是rsyslogd没有使用你想象的那么多内存。如果你仍然认为它是,请去了解rsyslogd。您可能还想browse the source。
一旦你完成了一些分析,你可能想要与rsyslogd开发人员打开一个对话框,他们可能会更好地回答你的问题。
顺便说一下,多次提出同样的问题是不好的形式 - 你最好还是编辑original question。就个人而言,鉴于您的主要问题似乎是“网站性能”(可能是网站),我建议首先查看为网站提供服务的软件,然后再关注使用的关键操作系统进程每天在数百万台服务器上运行。是的,问题可能是rsyslogd正在尝试将日志消息写入需要轮换的大文件,但它更可能是为每个请求动态生成的内容,当它可以(并且应该)被缓存时。
答案 3 :(得分:2)
lsof -p <pid>
应该可以解决问题。
答案 4 :(得分:1)
您可以了解该进程在/proc/[pid_of_process]/fd/
中打开的文件。
答案 5 :(得分:1)
应该做的诀窍:
/usr/sbin/lsof | grep rsyslogd
答案 6 :(得分:0)
如果你想“查看”这个过程,看看“发生了什么”,你会想要使用像strace这样的东西。