Назад | Перейти на главную страницу

Вывод процесса Strace Apache показывает ожидание 24 секунды? В чем может быть причина?

Выполнен strace для одного из дочерних элементов apache и он показывает 24 секунды между двумя системными вызовами.Как я могу определить причину такого поведения.Похоже, что оба дочерних элемента занимают почти одинаковое количество времени (24,7 и 23,92) секунды.

мы используем prefork apache с php5 и mysql 5

/ var / lib / php5 / - это папка сеанса php

вывод strace для apache children1 с идентификатором процесса -20539

ps -u www-data | grep apache2 | awk '{print "-p" $ 1}' | xargs strace -o /strace/strace.log -ff -s4096 -r

20539 0,000064 закрыть (13) = 0

20539 0,000060 открыть ("/ var / lib / php5 / sessions_9t2cvnvdoruh666rjpm515idm0", O_RDWR | O_CREAT, 0600) = 13

20539 0,000065 стадо (13, LOCK_EX) = 0

20539 24,711888 fcntl (13, F_SETFD, FD_CLOEXEC) = 0

20539 0,000056 fstat (13, {st_mode = S_IFREG | 0600, st_size = 211, ...}) = 0

20539 0,000080 lseek (13, 0, SEEK_SET) = 0

Вывод strace для apache children2 с идентификатором процесса - 20556

20556 0,000056 закрыть (13) = 0

20556 0,000058 открыть ("/ var / lib / php5 / sessions_9t2cvnvdoruh666rjpm515idm0", O_RDWR | O_CREAT, 0600) = 13

20556 0,000062 стадо (13, LOCK_EX) = 0

20556 23,928294 fcntl (13, F_SETFD, FD_CLOEXEC) = 0

20556 0,000055 fstat (13, {st_mode = S_IFREG | 0600, st_size = 211, ...}) = 0

20556 0,000083 lseek (13, 0, SEEK_SET) = 0

Может быть проблема с файлом, который вызвал файловый дескриптор (13) ?? Что-то не так с моим пониманием вывода strace.

В процессе взгляните на lsof -p <pid>

В частности, вы ищете FD 13

то есть из одного из моих развертываний httpd.

httpd 10865 apache 13w REG 8,5 1113187 59310687 /var/log/httpd/some_site.log

Я бы рассмотрел конфликт с получением эксклюзивной блокировки файла, отмеченный в FD 13, в этом случае, если другие процессы борются за блокировки, как указано fcntl, тогда это объяснит ваше долгое ожидание.