Langsames Laden der NextJS-App (NodeJS) im Apache-Server

Langsames Laden der NextJS-App (NodeJS) im Apache-Server

Haftungsausschluss: Alle Zeitmetriken werden über das Entwicklertool gemessen

Kontext

Ich habe einnächstesjsApp in einem VPS (OVH) gehostet.

Die NextJS-App läuft im Port 3000auf meinem VPS über pm2.

Wenn ich die App in Heroku bereitstelle (kostenloser Plan), funktioniert alles einwandfrei.

Auch lokal ist der Produktionsbuild in Ordnung und das Laden der Site dauert <1 s.

Die Site wird hinter einem Apache-Reverse-Proxy bereitgestellt.

Wenn mein virtueller Host beispielsweise zum Bereitstellen einer Datei konfiguriert ist index.htmlund nicht als Reverse-Proxy verwendet wird, funktioniert alles einwandfrei.

Das Problem

Das Problem ist: Wenn ich die Site über einen Navigator lade, dauert das Laden der Site mehr als 2 Minuten.

Wenn ich sehe, dass auf Heroku alles funktioniert (und auch lokal), vermute ich, dass es an der Serverkonfiguration liegt.

Versionsinformationen

➜ 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

Apache-Vhost-Konfiguration

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>

Überprüfen Sie, ob die App ausgeführt wird

➜ 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

Protokolle

Ich habe 0 Logins pm2 monitund .pm2/logs/nextjs-error.loges ist leer.

.pm2/logs/nextjs-out.logsagen

0|nextjs   | $ next start -p 3000
0|nextjs   | ready - started server on http://localhost:3000

Im Apache-Protokoll steht nichts Interessantes.

Beitragsende

Ich beschäftige mich seit drei Tagen mit diesem Problem und bin für jede Hilfe dankbar.

Wenn Sie weitere Informationen wünschen, fragen Sie einfach.

verwandte Informationen