2009-09-01 3 views
0

J'ai une application de rails qui prend un certain temps pour traiter certaines demandes (car elle traite les téléchargements d'images). J'ai actuellement trois processus de métissage dans un cluster, et je m'attends à ce que l'un des deux autres traite une deuxième requête si le premier est occupé.Comment puis-je être sûr que chaque processus de mon mongrel_cluster gère les requêtes?

Cependant, cela ne semble pas se produire. Si je regarde la sortie de top sur le serveur, je peux dire quand il s'agit de redimensionner une image, donc si j'essaie de frapper l'application avec une demande facile (qui finirait normalement rapidement), il semble attendre le long terme demande en fini.

Lorsque je regarde dans les fichiers log/mongrel.xxxx.log, tout ce que je vois est la sortie de l'application qui démarre.

Comment puis-je vérifier quel processus gère réellement chaque requête? Est-ce que je peux obtenir des métis pour consigner chaque requête (même si ce n'est qu'un horodatage, et quelque chose comme 'GET/chemin/vers/ressource')?

Des idées pour lesquelles le cluster pourrait ne pas partager la charge en premier lieu?

Le serveur Web frontal est nginx, alors peut-être que c'est là que je devrais regarder? Le nginx access_log ne semble rien contenir à propos de l'endroit où la requête a été envoyée.

Répondre

1

Nous avons rencontré des problèmes similaires sur reevoo.com il y a quelque temps. Jetez un oeil à la resultant blog post.

D'intérêt particulier est l'utilisation de mongrel_proctitle pour diagnostiquer le problème. Il permettra à un ps aux de voir ce qu'un métacaractère spécifique est en train de gérer.

+0

Merci, cela m'a donné l'information dont j'avais besoin. (Malheureusement, ce n'était pas l'information que je voulais, mais c'est une autre histoire :) – pkaeding

Questions connexes