Enfrentando um problema intermitente com um aplicativo LAMP em que o Apache se bifurca em seu ServerLimit e para (quase) paralisado. Um strace
on any httpd
processo mostra inúmeras epoll_wait
chamadas lentas.
1.254721 epoll_wait(14, {{EPOLLIN, ...
3.296430 epoll_wait(14, {{EPOLLIN, ...
1.018047 epoll_wait(14, {{EPOLLIN, ...
1.279721 epoll_wait(14, {{EPOLLIN, ...
1.145649 epoll_wait(14, {{EPOLLIN, ...
1.269836 epoll_wait(14, {{EPOLLIN, ...
1.094779 epoll_wait(14, {{EPOLLIN, ...
1.205911 epoll_wait(14, {{EPOLLIN, ...
9.052785 epoll_wait(14, {{EPOLLIN, ...
1.116279 epoll_wait(14, {{EPOLLIN, ...
1.027709 epoll_wait(14, {{EPOLLIN, ...
1.178679 epoll_wait(14, {{EPOLLIN, ...
1.336032 epoll_wait(14, {{EPOLLIN, ...
2.541861 epoll_wait(14, {{EPOLLIN, ...
1.113012 epoll_wait(14, {{EPOLLIN, ...
Um lsof
no mesmo processo afirma que este é um anon_inode
:
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
httpd 9709 apache 14u 0000 0,7 0 373 anon_inode
Alguma ideia do que poderia ser ou conselho para rastrear essas informações?
Responder1
Fundamentalmente, isso lsof
não é reportar tão bem quanto deveria. Posso reproduzir isso no Ubuntu 14.04, mas em um Ubuntu mais recente vejo:
perl 511299 frew 3u a_inode 0,11 0 9666 [eventpoll]
O que é bastante claro. Basicamente, esse descritor de arquivo epoll sempre parecerá lento porque é literalmente o bloqueio do kernel em um tempo limite ou em eventos em vários outros descritores de arquivo. Veja epoll(7)
para mais detalhes.