Итак, у нас есть supervisor
запуск процесса Python ‘Director’, который порождает процессы php на основе статистики SQS. Процессы PHP — это соскоб с сайтов.
В последние годы у нас не было проблем с ними, но в последние месяцы началось то, что некоторые процессы просто зависают после некоторого времени работы.
У меня есть некоторые результаты Strace:
rt_sigaction(SIGPIPE, NULL, {SIG_IGN, [PIPE], SA_RESTORER|SA_RESTART, 0x7fbe26b18d10}, 8) = 0
rt_sigaction(SIGPIPE, {SIG_IGN, [PIPE], SA_RESTORER|SA_RESTART, 0x7fbe26b18d10}, NULL, 8) = 0
poll([{fd=10, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {23227338, 293227395}) = 0
clock_gettime(CLOCK_MONOTONIC, {23227338, 293432691}) = 0
clock_gettime(CLOCK_MONOTONIC, {23227338, 293627011}) = 0
rt_sigaction(SIGPIPE, {SIG_IGN, [PIPE], SA_RESTORER|SA_RESTART, 0x7fbe26b18d10}, NULL, 8) = 0
select(11, [10], [], [], {1, 0}) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {23227339, 295350994}) = 0
rt_sigaction(SIGPIPE, NULL, {SIG_IGN, [PIPE], SA_RESTORER|SA_RESTART, 0x7fbe26b18d10}, 8) = 0
Они просто ходят и крутятся в данный момент.
Ltrace показывает, что он застрял в этом цикле:
memset(0x7fbe28e43b88, '\0', 8) = 0x7fbe28e43b88
memset(0x7fbe28e43b60, '\0', 24) = 0x7fbe28e43b60
memset(0x7fbe28e43b88, '\0', 8) = 0x7fbe28e43b88
memset(0x7fbe28e43b60, '\0', 24) = 0x7fbe28e43b60
memset(0x7fbe28e43b88, '\0', 8) = 0x7fbe28e43b88
memset(0x7fbe28e43b60, '\0', 24) = 0x7fbe28e43b60
Странно то, что это происходит почти всегда, когда анализируется http://xml.fxstreet.com/news/forex-news/index.xml
Теперь, прежде чем / пока я начну компилировать php с отладкой и проверять, что происходит под капотом, я решил спросить, что это за вызовы, чтобы узнать, есть ли у кого-нибудь идея.
Спасибо
Задача ещё не решена.
Других решений пока нет …