Dê um passo para trás primeiro - você está ficando muito baixo antes de descobrir onde está o problema. Uma maneira simples de fazer isso é verificar se as páginas HTTP estáticas estão lentas no Apache - se elas não estiverem, talvez o banco de dados esteja lento. O próximo passo que eu tomaria é ver por quanto tempo as consultas do banco de dados estão sendo realizadas.
Além disso, se tudo isso estiver no mesmo sistema, você poderá ver os recursos do sistema com as ferramentas top
, iotop
e iostat
.
Em relação à chamada do sistema poll
:
Eu tentaria adicionar a opção -c
ao strace do Apache para ver quais são os seus timings em cada syscall se você reduzi-lo ao apache antes de focar em uma chamada do sistema. Por exemplo, o topo da minha saída de um HAProxy saudável é:
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
38.79 0.001152 0 6089 epoll_wait
A chamada do sistema poll
é usada para aguardar para um evento disponível em um descritor de arquivo. Meu primeiro palpite desde o tempo limite é tão baixo que esse é o funcionamento normal do Apache. Pode ser que o Apache esteja ficando sem descritores de arquivos, já que um descritor de arquivo é necessário para cada soquete de rede se isso realmente for um problema. Você pode consultar a seção do manual do Apache sobre os descritores de arquivo se você chegar a este ponto. Mas, de acordo com DerkK, "estaria falhando em open () ou socket ()", o que faz muito mais sentido.
Então, isso é apenas alguns detalhes sobre o que provavelmente não é o seu problema real - novamente, dê vários passos para trás.