Você pode querer olhar para NewRelic . Embora não seja gratuito, ele instrumentará seu aplicativo e fornecerá alguns dos dados que você está procurando.
Observação: não sei ao certo o que pesquisar, para que a orientação possa ser tão valiosa quanto uma resposta.
Eu estou procurando uma maneira de comparar visualmente a atividade de dois aplicativos (neste caso, um servidor web com php se comunicando com o sistema ou mysql ou dispositivos de rede, etc) de tal forma que eu possa comparar o desempenho em um relance. p>
Eu sei que existem ferramentas para gerar dados dump de benchmarks para o apache e alguns disponíveis para php para rastreamento que você pode copiar e analisar, mas o que eu estou procurando é algo que pode reportar visualmente métricas de desempenho de dados em chamadas (o que chamou o que, quanto tempo demorou, quanta memória ele consumiu, como isso pode ser representado visualmente em uma pilha de chamadas) e apresentou-o graficamente como se fosse uma topologia ou um visual em camadas com diferentes elementos de chamadas do sistema ocupando diferentes camadas.
Um visual típico pode consistir em (por exemplo, usar diagramas de natação como apenas uma analogia):
Network (details here relevant to network diagnostics)
| ^ back out
v |
Linux (details here related to firewall/routing diagnostics) ^ back to network
| |
V ^ back to system
Apache (details here related to web request) |
| ^ response to
V | apache
PHP (etc) PHP---------->other accesses to php files/resources-----
| ^
v |
MySQL (total time) MySQL
| ^
V |
Each call listed + time + tables hit/record returned
Meu objetivo seria poder "inspecionar" uma solicitação / intervalo de solicitações durante um período de tempo para ver o que constituía a atividade naquele momento e rastreá-la do começo ao fim como uma ferramenta de diagnóstico.
Existe algum trabalho nesse sentido?
Eu percebo que seria intensivo no servidor, mas a intenção é comparar e analisar os processos uns contra os outros, por motivos educacionais e profissionais, e uma ajuda visual é uma grande surpresa em comparação com estatísticas brutas ou dezenas de atividades discretas vs gráficos de tempo. É difícil mostrar o ciclo completo.
Todas as indicações são bem-vindas.
Obrigado!
DOS COMENTÁRIOS:
> XHProf in conjunction with other programs such as Perconna toolkit
> (percona.com/doc/percona-toolkit/2.0/pt-pmp.html) for mySQL run apache
> with httpd -X & (Single threaded debug mode and background) then
> attach with strace -> kcache grind
Você pode querer olhar para NewRelic . Embora não seja gratuito, ele instrumentará seu aplicativo e fornecerá alguns dos dados que você está procurando.
Você vai querer experimentar XHProf , enquanto a configuração está longe de ser trivial, pode produzir gráficos de chamadas. (por exemplo, amostra aleatória encontrada em imagens do google: link )
A interface da web também pode enumerar várias estatísticas, como tempo de CPU e uso de memória, se você quiser comparar lado a lado as chamadas de aplicativos, essa é a maneira em minha opinião.
A menos que você tenha um sistema realmente ocupado, as camadas de rede, Linux e Apache consomem apenas uma fração de tempo em comparação com o restante da pilha.
Use apenas a extensão PHP XDebug e, em seguida, carregue o arquivo de dados gerado pelo XDebug para KCachegrind ou similar.
Se o KCachegrind revelar que o seu MySQL é o afunilamento real, basta mysqltuner
, MySQL Workbench
, mytop
, innotop
ou navegação de log de consultas lenta antiga para descobrir qual é o seu gargalo.
Se você realmente acredita que o Apache é o seu gargalo, dê uma olhada na sua página de status do servidor. Tente ajustar valores como TimeOut
, KeepAlive
e considere usar algo diferente do padrão prefork
FPM. Se tudo mais falhar, mude para lighttpd
ou nginx
.
O Linux ou a rede só será o seu afunilamento após você ter ajustado as camadas PHP + MySQL e Apache.
Tracelytics é outro analisador de desempenho de pilha completa, semelhante ao New Relic. Tracelytics tem alguns belos gráficos mostrando a latência do aplicativo, e se bem me lembro, mostra o nível de chamada. Confira, pode ser útil.
Tags networking