Детальная информация по PID процесса

12
D
На сайте с 28.06.2008
Offline
1108
7365

Господа, пытаюсь понять что грузит сервер утилитами htop и atop.

Сайты у меня висят на отдельных юзерах, система работает как fast CGI, так что в принципе ситуация в общем ясна. Осталось только найти скрипты - виновники нагрузки.

Вот вижу я процесс - который грузит сильно процессор и жрет памят, но в htop он выглядит как /usr/bin/php5-cgi php

Как зная PID процесс узнать что за скрипт его вызвал? Реально ли это вообще?

Dram добавил 31.08.2011 в 14:00

strace -p не очень подходит - ибо выдает мегатонны информации, среди которого не понятно что вызвало процесс

Himiko
На сайте с 28.08.2008
Offline
560
#1

server-status покажет, какие запросы в данный момент выполняются к web-серверу.

Можно глянуть lsof -p <pid>, чтобы понять, какие файлы открыты процессом.

Профессиональное администрирование серверов (https://systemintegra.ru). Круглосуточно. Отзывы (/ru/forum/834230) Лицензии (http://clck.ru/Qhf5) ISPManager,VDSManager,Billmanager e.t.c. по низким ценам.
M
На сайте с 16.09.2009
Offline
278
#2

Может начать с азов? Читайте документацию апача, узнайте про mod_status.

Помимо strace можно использовать что-то типа

ls -l /proc/PID/fd
чтобы посмотреть с какими файлами скрипт работает. Или lsof.
Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
D
На сайте с 28.06.2008
Offline
1108
#3
myhand:
Может начать с азов? Читайте документацию апача, узнайте про mod_status.

Помимо strace можно использовать что-то типа
ls -l /proc/PID/fd
чтобы посмотреть с какими файлами скрипт работает. Или lsof.

Все равно не понятно, вот что выдает:

lrwx------ 1 user1 user1 64 Авг 31 14:32 0 -> socket:[420604512]

l-wx------ 1 user1 user1 64 Авг 31 14:32 1 -> /var/log/apache2/error.log

l-wx------ 1 user1 user1 64 Авг 31 14:32 100 -> pipe:[420603807]

l-wx------ 1 user1 user1 64 Авг 31 14:32 101 -> pipe:[420602994]

l-wx------ 1 user1 user1 64 Авг 31 14:32 102 -> pipe:[420603100]

l-wx------ 1 user1 user1 64 Авг 31 14:32 103 -> pipe:[420603897]

l-wx------ 1 user1 user1 64 Авг 31 14:32 104 -> pipe:[420603101]

l-wx------ 1 user1 user1 64 Авг 31 14:32 105 -> pipe:[420603808]

l-wx------ 1 user1 user1 64 Авг 31 14:32 107 -> pipe:[420603809]

l-wx------ 1 user1 user1 64 Авг 31 14:32 108 -> pipe:[420603898]

l-wx------ 1 user1 user1 64 Авг 31 14:32 110 -> pipe:[420603899]

l-wx------ 1 user1 user1 64 Авг 31 14:32 2 -> /var/log/apache2/error.log

lrwx------ 1 user1 user1 64 Авг 31 14:32 3 -> (deleted) /tmp/.xcache.509.0.731847287.lock

lr-x------ 1 user1 user1 64 Авг 31 14:32 39 -> pipe:[420566924]

lrwx------ 1 user1 user1 64 Авг 31 14:32 4 -> (deleted) /tmp/.xcache.509.1.1439462411.lock

l-wx------ 1 user1 user1 64 Авг 31 14:32 42 -> pipe:[420566925]

l-wx------ 1 user1 user1 64 Авг 31 14:32 43 -> pipe:[420566991]

l-wx------ 1 user1 user1 64 Авг 31 14:32 44 -> pipe:[420567650]

N
На сайте с 06.05.2007
Offline
419
#4

Мда, xcache тут скрывает имя исходного файла.

Если скрипт достаточно долго выполняется, то вы успеете поймать его и в top и server-status. PID и там и там совпадает.

Вообще, mod_log_slow гораздо удобнее в этом плане. По таким логам даже можно косвенно оценить где у этого скрипта "больше" нагрузки в php или в mysql.

Кнопка вызова админа ()
D
На сайте с 28.06.2008
Offline
1108
#5

Что удивительно - для этого сайта системой кеширвоания выбрана мемкеш. Как сюда затесался Хкеш не понятно....

M
На сайте с 16.09.2009
Offline
278
#6
netwind:
Вообще, mod_log_slow гораздо удобнее в этом плане. По таким логам даже можно косвенно оценить где у этого скрипта "больше" нагрузки в php или в mysql.

А что, у апача запись времени отработки запроса в лог - уже отменили?

На самом деле - strace замечательно подойдет, чтобы узнать "какой скрипт" и "чем занимается". Просто его вывод нужно уметь настраивать, а для этого прочитать man. Dram, разберитесь, к примеру - как заставить его выводить только вызовы open().

Dram:
Что удивительно - для этого сайта системой кеширвоания выбрана мемкеш. Как сюда затесался Хкеш не понятно....

Затем, что кто-то головой думать не привык - и понаставил на сервер все что нужно и не нужно. Для справки - xcache не является "системой кеширования", аналогичной memcache. Это один из механизмов кеширования опкода.

D
На сайте с 28.06.2008
Offline
1108
#7

Правильно ли я понимаю что Хкеш должен стоять на сервере для кеширования самого кода, а Мемкеш можно использовать для кеширвоания Контента?

У меня сейчас Хкеш используется для кеширования контента для 8 сайтов, а один сайт использует Мемкеш. (В джумле можно выбрать систему кеширования).

N
На сайте с 06.05.2007
Offline
419
#8
myhand:
А что, у апача запись времени отработки запроса в лог - уже отменили?

ну там неудобно.

это где-нибудь в "тупичке столлмана" имеет смысл задавать такие вопросы. а тут подразумевается, что люди решают практические вопросы. информации в access.log слишком много и там нет детализации по типам затраченного времени.

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

Правильно ли я понимаю что Хкеш должен стоять на сервере для кеширования самого кода, а Мемкеш можно использовать для кеширвоания Контента?

не только. xcache позволяет работать и как хранилище данных. можно оставить один xcache.

M
На сайте с 16.09.2009
Offline
278
#9
netwind:
информации в access.log слишком много и там нет детализации по типам затраченного времени.

Вы хотели сказать - слишком мало? Т.к. формат настраивается - укажите только то, что нужно.

И не забываем про задачу. Она не в отладке медленных скриптов - а в их обнаружении и идентификации. Это на порядок более простая задача.

netwind:
не только. xcache позволяет работать и как хранилище данных. можно оставить один xcache.

Можно, конечно. Только имхо: лучше отделить мух от котлет.

N
На сайте с 06.05.2007
Offline
419
#10
myhand:
Вы хотели сказать - слишком мало? Т.к. формат настраивается - укажите только то, что нужно.

много, потому что пишется каждый запрос.

ну вот попробуйте настроить запись запросов занимающих больше 2.5 секунд и отдельно запись общего времени запроса, отдельно sys, отдельно user тоже с дробными секундами.

myhand:
Можно, конечно. Только имхо: лучше отделить мух от котлет.

xcache это уже котлеты с мухами.

он должен немного быстрее работать чем memcache - данные проецируются в память процесса и в удачных случаях не нужен межпроцессный обмен.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий