Para depurar isso, isolaria sistematicamente cada componente para encontrar o gargalo. Em todos os momentos eu iria tail -f
quaisquer arquivos de log, incluindo o acesso nginx / logs de erro e os logs de trilhos para erros.
A primeira questão é, é lenta apenas na produção ou também no modo de desenvolvimento? A resposta ajudará você a diagnosticar, concentrando-se no que é diferente entre os ambientes.
Inicie o processo de unicórnio no modo independente e conecte-se à porta 8080, eliminando o nginx. Ainda é lento? Se sim, é um problema de trilhos ou unicórnio. Duvido que o nginx seja o problema, porque os recursos estáticos estão sendo servidos relativamente rápido em seu site.
Teste o aplicativo em Webrick para eliminar o Unicorn. Se ainda for lento, comece a investigar seu aplicativo de trilhos.
Eu testei seu site com telnet ck.uci.agh.edu.pl 80
fazendo um GET http://ck.uci.agh.edu.pl/
e o atraso estava lá antes de qualquer texto ser impresso. Isso elimina qualquer problema de carregamento de javascript ou de recursos no navegador.
Coisas para experimentar:
-
Teste componentes isolados do seu aplicativo em
rails console
fazendo pesquisas de modelo. Percorra cada componente da exibição da sua página principal, uma de cada vez, até encontrar o atraso. Tente executar o código que você executa na açãoindex
do controlador e qualquer coisa que a sua página executa enquanto é analisada. Você está procurando por problemas de banco de dados, atrasos de conexões para serviços externos, etc. -
Use um período de avaliação do serviço New Relic no modo Pro, que pode revelar afunilamentos de aplicativos, como consultas de banco de dados lentas ou chamadas para serviços externos. Mostra tudo o que é executado e quanto tempo demora.
-
Faça uma pesquisa de DNS na linha de comando do seu servidor, como
nslookup somehost.com
. Às vezes, um servidor DNS atolado pode desacelerar seu aplicativo se ele usar nomes de host em qualquer comunicação com outros servidores, como seu servidor de banco de dados, serviços de geolocalização, etc. -
A única coisa que eu vi na sua configuração foi que você deve definir seu worker_processes para pelo menos o unicórnio. número de CPUs no seu servidor. Tente aumentar esse número para 4 e veja se isso ajuda, mas observe o uso da memória.
Espero que isso ajude. Boa sorte!