Se você quiser depurar o problema no sistema Linux, poderá obter uma visão geral de alto nível com essas ferramentas em tempo real:
-
htop
para obter uma visão geral do uso da CPU e da memória -
iotop
para ver o rendimento geral de E / S (deve ser executado como root - "sudo
") -
nethogs
para ver a E / S da rede em detalhes (também raiz)
Alguns outros comandos são úteis, mas não são em tempo real:
-
netstat
(prefirosudo netstat -tunap
) mostra conexões UDP e TCP e seu estado de conexão -
ls -l /proc/123/fd
mostra os descritores de arquivos abertos do processo # 123 (os fd's são usados para todos os tipos de E / S)
Espero que isso ajude. Em relação ao mysql você também deve considerar executar um vácuo de vez em quando e também analisar quais índices você usa onde. Mais do que isso, você deve estar ciente de que JOIN
s ou subsequente SELECT
s pode facilmente se tornar um gargalo.
Devo acrescentar que o conjunto de ferramentas acima é de nível muito baixo. Ao criar perfis / otimizar um aplicativo da Web, geralmente prefiro usar mais ferramentas de alto nível que, na verdade, são independentes do sistema operacional. Os arquivos de log ajudam muito e você deve considerar o uso de print
para registrar os timestamps. Dessa forma, você tem uma ideia de qual parte da função leva quanto tempo executar. Geralmente as operações de E / S são as mais lentas.
Além disso, eu realmente recomendo usar o Webpagetest.org , ele oferece bons gráficos em cascata de todas as solicitações HTTP enviadas pelo navegador.