2008-09-24 14 views
8

Je sais que ce n'est pas directement une question de programmation, mais les gens sur stackoverflow semble être en mesure de répondre à toute question.question d'installation nginx

J'ai un serveur exécutant Centos 5.2 64 bits. Assez puissant serveur dual core 2 avec 4 Go de mémoire. Il sert principalement des fichiers statiques, flash et images. Quand j'utilise lighttpd, il supporte facilement plus de 80 Mo/s, mais quand je teste avec nginx, il descend à moins de 20 Mo/sec.

Ma configuration est assez simple, utilise le fichier de configuration par défaut, et je l'ai ajouté les éléments suivants

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; 
.... 
} 

Et je pensais que nginx était censé être au moins aussi puissant, donc je ne doit pas être en train de faire quelque chose .

+0

À quoi ressemble votre configuration lighttpd? Cela pourrait être intéressant de comparer. En outre, puisque lighttpd est à un seul thread mais que vous êtes sur dual core, commencez-vous avec deux lighttpds ou êtes-vous capable de gérer 80mb/s avec une seule instance? – Till

+0

Pouvez-vous décrire votre méthode de test? Cela pourrait aider. –

+0

Ceci est un serveur web extrêmement actif qui ne fait que des fichiers statiques. Le lighttpd et nginx sont installés avec yum on centos 5 box. Assez simple à partir de là. Tout est surveillé avec munin et des sessions actives sur l'équilibreur de charge. La boîte avec nginx fait 50% de ce que fait la lumière –

Répondre

3

Peut-être que lighttpd utilise une sorte de mise en cache? Il y a un bon article here qui décrit comment configurer memcached avec nginx pour un gain de performance de 400%.

Le document nginx sur le module memcached est here.

6

Lorsque vous rechargez votre nginx (Kiil HUP) vous obtiendrez quelque chose comme ça dans vos journaux d'erreurs

 
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 

Quelle méthode événement est votre nginx compilé à utiliser?

Est-ce que vous faites des access_loging? Envisagez d'ajouter buffer = 32k, ce qui réduira la contention sur le verrou en écriture pour le fichier journal. Envisager de réduire le nombre de travailleurs, cela semble contre-intuitif, mais les travailleurs ont besoin de synchroniser les uns avec les autres pour les appels sys comme accept(). Essayez de réduire le nombre de travailleurs, idéalement, je suggère 1.

Vous pouvez essayer de définir explicitement la lecture et d'écriture buffers sur la prise d'écoute, voir http://wiki.codemongers.com/NginxHttpCoreModule#listen

1

Suggestions: - Utiliser 1 travailleur par processeur. - Vérifiez les différents paramètres du tampon nginx