Linux - strace для анализа скрипта


Материал из Wiki - Iphoster - 'the best ever support'

Перейти к: навигация, поиск

Самые выгодные сервера‎ в рунете


strace - утилита которая может помочь выяснить чем занят зависший процесс-скрипт.


# strace -o file -u user [command]
-o - запись в файл
-u - выполнить из под пользователя


Пример1:

# strace -u user php -q index.php
ioctl(6, FIONREAD, [194])               = 0
recvfrom(6, "s\207\201\200\0\1\0\1\0\2\0\5\7p224302\5mysql\3ihc\2r"..., 1024, 0, {sa_family=AF_INET, sin_port=htons(53), 
sin_addr=inet_addr("213.186.xx.xx")}, [16]) = 194
close(6)                                = 0
connect(5, {sa_family=AF_INET, sin_port=htons(3306), sin_addr=inet_addr("91.218.xx.xx")}, 16^ 


Видим что скрипт висит - так как не может подключиться к 91.218.xx.xx:3306. Скорее всего порт закрыт на сервере.


Пример 2
Joomla - Error displaying the error page: Application Instantiation Error

munmap(0x7f5f0a193000, 4096) = 0
poll([{fd=5, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
write(5, "l0003SELECT `session_id`nFROM `i"..., 112) = 112
read(5, "7001377z4#42S02Table 'proro149_1.i"..., 16384) = 59
poll([{fd=5, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
write(5, "100016", 5) = 5
read(5, "70010002010", 16384) = 11
stat("/usr/share/zoneinfo/UTC", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
stat("/usr/share/zoneinfo/UTC", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
write(1, "Error displaying the error page:"..., 64Error displaying the error page: Application Instantiation Error) = 64
poll([{fd=5, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
write(5, "2444003UPDATE `i5vw9_session`nSET "..., 1192) = 1192
read(5, "7001377z4#42S02Table 'proro149_1.i"..., 16384) = 59
poll([{fd=5, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
write(5, "100016", 5) = 5
read(5, "70010002010", 16384) = 11
stat("/usr/share/zoneinfo/UTC", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
stat("/usr/share/zoneinfo/UTC", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0


Проблема с базой или таблицей i5vw9_session. Необходимо проверить структуру базы, наличие таблицы i5vw9_session или конфиг Joomla - configuration.php


Пример 3

getsockname(6, {sa_family=AF_INET, sin_port=htons(34581), sin_addr=inet_addr("37.187.78.105")}, [16]) = 0
sendto(6, "GET /tpl/rss.xml HTTP/1.1\r\nHost:"..., 60, MSG_NOSIGNAL, NULL, 0) = 60
poll([{fd=6, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=6, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
poll([{fd=6, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=6, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)

Скрипт висит из-за запроса к /tpl/rss.xml. В нашем случае нужно убрать запросы к http://dle.org.ua/tpl/rss.xml (так как сама ссылка висит)

Индекс цитирования