Как посмотреть, какими файлами манипулирует определенный процесс? - PullRequest
1 голос
/ 27 мая 2009

В моем случае это "rsyslogd",

Я считаю, что он потребляет до 170 МБ памяти, что слишком много,

и я проверил его конфигурационный файл, расположенный в /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

Не получил никаких подсказок из вышеуказанных файлов ..

Ответы [ 7 ]

7 голосов
/ 27 мая 2009
lsof -p `pidof rsyslogd`
6 голосов
/ 27 мая 2009

lsof очень удобен для этого, как и фьюзер.

3 голосов
/ 27 мая 2009

Вы утверждаете, что rsyslogd использует «слишком много» памяти (170 МБ). Слишком много по сравнению с чем?

Сначала начните с прочтения статьи . Скорее всего, rsyslogd не использует столько памяти, сколько вы думаете. Если вы все еще думаете, что это так, изучите rsyslogd . Вы также можете просмотреть источник .

После того, как вы сделали немного больше анализа, вы можете открыть диалог с разработчиками rsyslogd, которые, вероятно, в лучшем положении, чтобы ответить на ваш вопрос.

Кстати, плохо задавать один и тот же вопрос несколько раз - вам лучше отредактировать оригинальный вопрос .

Лично, учитывая, что ваша основная проблема, похоже, связана с «производительностью сайта» (предположительно, с веб-сайтом), я бы посоветовал сначала взглянуть на программное обеспечение, которое обслуживает сам сайт, прежде чем сосредоточиться на критических процессах ОС, которые используются. на миллионах серверов ежедневно. Да, проблема может заключаться в том, что rsyslogd пытается записывать сообщения журнала в огромный файл, который необходимо повернуть, но это, скорее всего, контент, который генерируется динамически для каждого запроса, когда он может (и должен) быть кэширован.

2 голосов
/ 27 мая 2009

lsof -p <pid> должен сделать трюк.

1 голос
/ 27 мая 2009

Должен сделать трюк:

/usr/sbin/lsof | grep rsyslogd
1 голос
/ 27 мая 2009

Вы можете получить представление о файлах, которые процесс открыл в /proc/[pid_of_process]/fd/.

0 голосов
/ 27 мая 2009

Если вы хотите «заглянуть внутрь» процесса и увидеть «что происходит», вам нужно использовать что-то вроде strace.

...