Isenção de responsabilidade: todas as métricas de tempo são medidas por meio da ferramenta do desenvolvedor
Contexto
eu tenho umnextjsaplicação alojada num vps (ovh).
O aplicativo nextjs é executado na porta 3000
do meu vps via pm2
.
Quando implanto o aplicativo no heroku (plano gratuito), tudo funciona bem.
No local, a compilação de produção também está ok e o site leva <1s para carregar.
O site é servido por um proxy reverso Apache.
Se meu vhost estiver configurado para servir um arquivo ( index.html
por exemplo) e não for usado como proxy reverso, tudo funcionará bem.
O problema
O problema é: quando carrego o site através de um navegador, o site leva +2 minutos para carregar.
Veja que no heroku tudo funciona (e no local também) suspeito da configuração do meu servidor.
Informações sobre versões
➜ node -v
v10.21.0
➜ yarn -v
1.22.5
➜ pm2 -v
4.5.1
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster
Configuração do Apache vhost
http
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName domain.dev
ServerAlias www.domain.dev
DocumentRoot /var/www/domain.dev/placeholder-pws
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =domain.dev [OR]
RewriteCond %{SERVER_NAME} =www.domain.dev
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
https
<IfModule mod_ssl.c>
<VirtualHost *:443>
ProxyPreserveHost On
ServerAdmin [email protected]
ServerName domain.dev
ServerAlias www.domain.dev
# DocumentRoot /var/www/domain.dev/placeholder-pws
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyPass "/" "http://localhost:3000/"
ProxyPassReverse "/" "http://localhost:3000/"
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/domain.dev/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.dev/privkey.pem
</VirtualHost>
</IfModule>
verifique se o aplicativo está em execução
➜ netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::3000 :::* LISTEN 14383/node
➜ ps -p 14383 -o comm=
node
Histórico
Eu tenho 0 login pm2 monit
e .pm2/logs/nextjs-error.log
está vazio.
.pm2/logs/nextjs-out.log
dizer
0|nextjs | $ next start -p 3000
0|nextjs | ready - started server on http://localhost:3000
O log do Apache não diz nada de interessante.
pós-fim
Estou com esse problema há 3 dias, qualquer ajuda é bem vinda.
Se quiser mais informações não hesite em perguntar.