2016-07-24 19 views
1

Lassen Sie mich zuerst die Situation erklären, ich habe einen Server mit 64 GB RAM & 20 Core mit 40 GB (SSD). Ich habe etwa 2000 gleichzeitige BenutzerNginx & PHP-FPM 502 schlechter Gateway Fehler

1 Woche, ich war Apache mit PHP 7, aber die CPU war 80% manchmal bis zu 101%, das ist, weil die großen SQL-Inserts, nach der Verschiebung von Apache zu Nginx, MySql zu MongoDB . die CPU betrug etwa 8%.

mein Problem ist jetzt Nginx eine Menge Zeit 502 falsche Gateway Antwort zurück, sah ich einige Antworten, aber mir gar nichts helfen, aber wenn ich immer 502-listen = 127.0.0.1:9000 ngnix fpm Buchse listen = /var/run/php5-fpm.sock Port ändern zurückzukehren, und ich kann Finde es nicht heraus, um zu wissen, was das Problem ist.

Antwort

0

Ihr Server ist leistungsfähig genug, > 500 000 Anfragen pro Tag Anwendung zu handhaben (wenn es klug geschrieben).

Problem ist wegen PHP-FPM kann nicht mehr Kinder verarbeiten, um mehr Anfragen zu bedienen.

In Apache wurde automatisch mit zusätzlichen Apache-Prozess gestartet.

Aber Nginx + PHP-FPM gibt Ihnen Freiheit, wie man mit diesen Situationen umgeht.

Just Your fpm Pool conf ändern: /etc/php/php-fpm.d/www.conf (oder was auch immer Sie verwenden)

sicherstellen, dass es diesen Inhalt hat:

pm = static 
pm.max_children = 4096 
pm.process_idle_timeout = 10s 
pm.max_requests = 32 

und starten php fpm

auch bearbeiten nginx.conf und machen sicher, dass es diese Felder oben hat:

user http; 
worker_processes auto; 

events { 
    worker_connections 4096; 
    multi_accept on; 
    use epoll; 
} 



p.s. nicht ändern listen Attribut auf ip:port - Socket ist schneller, cuz in ip:port es erstellt Netzwerkverbindung von IP und Port, aber in der Socket-Version es öffnet einfach .sock "Datei".

p.s. Ändern Sie nicht fastcgi_buffers und etc-Richtlinien, wird es nicht beheben schlechtes Gateway Problem, wegen weniger php-fpm Prozesse.

In meinem Server ist es Standard:

fastcgi_buffers 32 1024k; 
fastcgi_buffer_size 1024k; 


P. S.Deaktivieren Sie unnötige Protokollierung (nginx.conf) nicht Ihr Plattenlaufwerk zu machen mehr IO-Last:

access_log off; 
error_log /var/log/nginx/error.log crit; 

Wenn Sie überwachen müssen newrelic und überwachen Sie Ihre Server-Netzwerk, CPU, mem Aktivität

+1

Dank für diese große Antwort :) –

+0

wie es hilfreich war! glücklich zu helfen (: – num8er

+1

eigentlich hilft es mir, mehr gleichzeitige Anfragen zuzulassen .. und ich bewegte bestimmten Teil des Projekts von Laravel nach Phalcon .. und jetzt funktioniert es gut –

-1

Diese Änderungen funktioniert: Nginx Konfigurationsdatei /etc/nginx/nginx.conf: unten unter http Abschnitt hinzufügen in nginx.conf Datei

http

{

fastcgi_buffers 8 16k ;

fastcgi_buffer_size 32k;

}

Verwandte Themen