2008-09-24 14 views
8

Ich weiß, das ist nicht direkt eine Programmierfrage, aber Leute auf Stackoverflow scheint in der Lage zu sein, jede Frage zu beantworten.nginx Setup-Frage

Ich habe einen Server mit Centos 5.2 64 Bit. Ziemlich leistungsfähiger Dual Core 2 Server mit 4 GB Speicher. Es dient hauptsächlich statische Dateien, Flash und Bilder. Wenn ich lighttpd benutze, liefert es leicht über 80 MB/s, aber wenn ich mit nginx teste, fällt es auf weniger als 20 MB/s ab.

Mein Setup ist ziemlich geradlinig, verwendet die Standard-Setup-Datei, und ich habe die folgende

user lighttpd; 
worker_processes 8; 
worker_rlimit_nofile 206011; 
#worker_rlimit_nofile 110240; 

error_log /var/log/nginx/error.log; 
#error_log /var/log/nginx/error.log notice; 
#error_log /var/log/nginx/error.log info; 

pid  /var/run/nginx.pid; 


events { 
    worker_connections 4096; 
} 

http { 
.... 

keepalive_timeout 2; 
.... 
} 

hinzugefügt Und ich dachte, nginx sollte mindestens so mächtig sein, also muss ich nicht etwas tun .

+0

Wie sieht Ihre Lighttpd-Konfiguration aus? Könnte interessant sein zu vergleichen. Da lighttpd single thread ist, aber du bist dual core - fängst du zwei lighttpds an oder verarbeitest du 80mb/s mit einer einzigen Instanz? – Till

+0

Können Sie Ihre Testmethode beschreiben? Das könnte helfen. –

+0

Dies ist ein extrem aktiver Webserver, der nur statische Dateien ausführt. Die Lighttpd und Nginx sind mit Yum auf Centos 5 Box installiert. Ziemlich geradlinig von dort. Alles wird mit Munin und aktiven Sitzungen auf dem Load Balancer überwacht. Die Box mit nginx macht 50% von dem was hell ist –

Antwort

3

Vielleicht verwendet Lighttpd eine Art Caching? Es gibt einen großartigen Artikel here, der beschreibt, wie memcached mit nginx für eine berichtete 400% Leistungssteigerung eingerichtet wird.

Das Nginx-Dokument auf dem Memcached-Modul ist here.

6

Wenn Sie Ihre nginx (kiil HUP) neu zu laden Sie Ihre nginx zusammengestellt verwenden zu so etwas in Ihrem Fehlerprotokolle

 
2008/10/01 03:57:26 [notice] 4563#0: signal 1 (SIGHUP) received, reconfiguring 
2008/10/01 03:57:26 [notice] 4563#0: reconfiguring 
2008/10/01 03:57:26 [notice] 4563#0: using the "epoll" event method 
2008/10/01 03:57:26 [notice] 4563#0: start worker processes 
2008/10/01 03:57:26 [notice] 4563#0: start worker process 3870 

Welche Event-Methode ist?

Machst du eine access_log'ing? Ziehen Sie in Erwägung, Puffer = 32 KB hinzuzufügen, wodurch die Konflikte bei der Schreibsperre für die Protokolldatei verringert werden.

In Betracht ziehen, die Anzahl der Worker zu reduzieren, klingt es Zähler intuitiv, aber die Arbeiter müssen für sys-Aufrufe wie accept() miteinander synchronisieren. Versuchen Sie, die Anzahl der Arbeiter zu reduzieren, im Idealfall würde ich 1.

vorschlagen Sie könnten versuchen, explizit die Leseeinstellung und Buchse Puffer auf dem Socket schreiben, siehe http://wiki.codemongers.com/NginxHttpCoreModule#listen

1

Vorschläge: - Verwenden Sie 1 Arbeiter pro Prozessor. - Überprüfen Sie die verschiedenen nginx Puffereinstellungen