Linux - strace для анализа скрипта: различия между версиями

Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2024
Перейти к:навигация, поиск
 
(не показаны 3 промежуточные версии этого же участника)
Строка 1: Строка 1:
 +
[[Файл:Hot11.png|link=https://bit.ly/3tbFsd6| Самые выгодные сервера‎ в рунете ]]
 +
 +
 
'''strace - утилита которая может помочь выяснить чем занят зависший процесс-скрипт.'''
 
'''strace - утилита которая может помочь выяснить чем занят зависший процесс-скрипт.'''
  
  
Пример1:
+
# strace -o file -u user [command]
 +
-o - запись в файл
 +
-u - выполнить из под пользователя
 +
 
 +
 
 +
'''Пример1:'''
 
  # strace -u user php -q index.php
 
  # strace -u user php -q index.php
 
  ioctl(6, FIONREAD, [194])              = 0
 
  ioctl(6, FIONREAD, [194])              = 0
Строка 14: Строка 22:
  
  
Пример 2 <br />
+
'''Пример 2''' <br />
 
Joomla - Error displaying the error page: Application Instantiation Error
 
Joomla - Error displaying the error page: Application Instantiation Error
  
Строка 38: Строка 46:
  
 
Проблема с базой или таблицей i5vw9_session. Необходимо проверить структуру базы, наличие таблицы i5vw9_session или конфиг Joomla - configuration.php
 
Проблема с базой или таблицей i5vw9_session. Необходимо проверить структуру базы, наличие таблицы i5vw9_session или конфиг Joomla - configuration.php
 +
 +
 +
'''Пример 3''' <br />
 +
 +
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 (так как сама ссылка висит)

Текущая версия на 13:16, 12 декабря 2015

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


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 (так как сама ссылка висит)