2010-04-25 10 views
2

Nous utilisons nginx-tornado-django pour fournir des services Web. C'est-à-dire, pas d'interface web. Le serveur nginx sert d'équilibreur de charge. Le serveur a 8 cœurs, nous avons donc lancé 8 processus tornado-django sur chaque serveur. Memcached est également déployé pour améliorer les performances. Les demandes par jour sont d'environ 1 million par serveur. Nous utilisons MySQL comme backend DB.nginx-tornado-django demande timeout

Le code a été testé et correct. Notre profilage montre que normalement chaque requête est traitée en 100ms. Le problème est, nous trouvons qu'environ 10 pour cent des demandes souffre d'un problème de délai d'attente. Beaucoup de demandes n'ont même pas atteint la tornade. Je n'ai vraiment pas beaucoup d'expérience sur le réglage de nginx/tornado/MySQL. À l'heure actuelle, je n'ai pas la moindre idée de ce qui ne va pas. Tout conseil est apprécié.

Répondre

1

Vous pouvez profiler séparément chaque composant et niveau: nginx, tornade, django et mysql

Je ne sais pas sur les détails de ce que votre application fait et il est juste une supposition, mais il est possible que le ralentissement se passe dans la lecture/écriture de données à mysql. Mais votre profilage devrait déterminer exactement où le problème se produit.