Heim  >  Fragen und Antworten  >  Hauptteil

Laravel – Hohe CPU-Auslastung nach der Bereitstellung

Ich habe ernsthafte Probleme bei der Bereitstellung meiner Laravel-Anwendung. Dies ist eine Nachrichtenseite, nichts Kompliziertes. Die gesamte Homepage wird in Redis als reines HTML zwischengespeichert und Abfrageergebnisse werden ebenfalls in Redis gespeichert, sodass die MySQL-Nutzung sehr minimal ist. Da die Anwendung voll funktionsfähig ist, haben wir beschlossen, sie nachts in der Produktionsumgebung zu testen. Nach der Bereitstellung stellten wir fest, dass die CPU-Auslastung auf allen 12 Kernen auf 90–100 % anstieg, sodass die Anwendung sehr langsam oder überhaupt nicht lief. Es gibt etwa 400 Benutzer und 17–20 Anfragen pro Sekunde.

Wir haben versucht, die Servereinstellungen zu ändern (z. B. PHP-FPM), aber ohne Erfolg. Wir haben einige Tests mit Apache Benchmark durchgeführt und die Ergebnisse zeigten, dass die CPU-Auslastung bei 10 gleichzeitigen Benutzern etwa 80–100 % betrug. Als nächstes wiederholten wir den Test mit einem sauberen Laravel (ohne unsere Anwendung) mit ähnlichen Ergebnissen.

Was wir verwenden:

Wir haben festgestellt, dass Nginx-Caching die CPU-Auslastung in Anwendungen wie Wordpress oder Drupal reduzieren kann. Aber ich denke, Laravel nutzt es nicht. Muss Laravel so konfiguriert werden, dass es den Nginx-Reverse-Proxy verwendet und ihn auf besondere Weise zwischenspeichert?

Ich weiß wirklich nicht, was ich tun soll. Hat jemand ähnliche Probleme festgestellt?

P粉769413355P粉769413355180 Tage vor423

Antworte allen(1)Ich werde antworten

  • P粉463840170

    P粉4638401702024-03-28 00:33:42

    Laravel 在 Nginx 上运行得很好。我使用 Nginx 在 Google Cloud 上的容器中运行我的应用程序,没有任何性能问题。

    如果您想使用保留代理,这个代理可以帮我完成这项工作:

    server {
    
    listen 80;
    
    your_news_app.com;
    
    location / {
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header Host $host;
         proxy_set_header X-Forwarded-Proto $scheme;
         proxy_pass http://localhost:8000;
    }

    }

    Antwort
    0
  • StornierenAntwort