web-dev-qa-db-fra.com

Le site est sous forte charge + ROR

Nous exécutons un site Web avec ROR sur CentOS 6 avec 2 serveurs Web et 1 serveur de base de données. Parfois, il affiche le message "Le site Web est sous forte charge" ... Certains peuvent vous aider à vérifier ici.

Nous utilisons Passenger 4.0.21 avec Ruby 1.8.7 et Apache 2.2.15. Le serveur Web fonctionne avec les paramètres par défaut.

Vous trouverez ci-dessous une sortie du statut de passager:

# passager-statut

Version : 4.0.21
Date    : Thu Dec 12 02:02:44 -0500 2013
Instance: 20126
----------- General information -----------
Max pool size : 6
Processes     : 6
Requests in top-level queue : 0

----------- Application groups -----------
/home/web/html#default:
  App root: /home/web/html
  Requests in queue: 100
  * PID: 20290   Sessions: 1       Processed: 53      Uptime: 24h 3m 5s
    CPU: 0%      Memory  : 634M    Last used: 23h 16m 8
  * PID: 22657   Sessions: 1       Processed: 37      Uptime: 23h 15m 55s
    CPU: 0%      Memory  : 609M    Last used: 22h 44m
  * PID: 29147   Sessions: 1       Processed: 146     Uptime: 20h 47m 48s
    CPU: 0%      Memory  : 976M    Last used: 18h 20m
  * PID: 22216   Sessions: 1       Processed: 26      Uptime: 10h 3m 19s
    CPU: 0%      Memory  : 538M    Last used: 9h 44m 4
  * PID: 23306   Sessions: 1       Processed: 75      Uptime: 9h 43m 22s
    CPU: 0%      Memory  : 483M    Last used: 8h 44m 4
  * PID: 25626   Sessions: 1       Processed: 115     Uptime: 8h 46m 42s
    CPU: 0%      Memory  : 540M    Last used: 7h 59m 5
25
Rahul Kumar

Vous avez trop de demandes en file d'attente. Depuis la version 4.0.15, il y a une limite qui est 100 par défaut. Voici un court extrait de http://blog.phusion.nl/2013/09/06/phusion-passenger-4-0-16-released/ qui dit:

Phusion Passenger affiche désormais un message d'erreur aux clients si trop de demandes sont mises en file d'attente, au lieu de les laisser attendre. Cela améliore considérablement la qualité de service. Par défaut, "trop" est 100. Vous pouvez le personnaliser avec PassengerMaxRequestQueueSize (Apache) ou passenger_max_request_queue_size (Nginx).

Jetez un œil au guide de l'utilisateur à ce sujet: http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerMaxRequestQueueSize

Vous pouvez essayer de l'augmenter ou de le définir sur 0afin de le désactiver.

[~ # ~] modifier [~ # ~]

Vous devriez également vérifier vos journaux pour voir s'il y a des demandes qui prennent trop de temps. Peut-être avez-vous des processus dans votre code qui prennent trop de temps. Je préfère utiliser NewRelic pour surveiller ces choses.

25
cantonic