Question

I ont un processus de python (pylônes webapp) qui utilise en permanence 10 à 30% de la CPU. Je vais améliorer / l'enregistrement tune pour obtenir un aperçu de ce qui se passe, mais jusque-là, sont-il des outils / techniques qui permettent de voir ce processus python est en train de faire, combien et comment threads occupés il a etc?

Mise à jour:

  • journal d'accès configuré qui montre qu'il n'y a pas de demandes en cours, webapp est juste tourne au ralenti
  • pas de point pour brancher paste.profile en chaîne middleware car il n'y a aucune demande, l'activité doit se produire soit dans les threads de travail WebApp ou serveur web Paster
  • en cours d'exécution Paster comme ceci: "python -m cprofile -o outfile / usr / bin / Paster servent dev.ini" et l'inspection des résultats montre que la plupart du temps est consacré à "posix.waitpid". Paster court webapp dans le sous-processus, l'activité de sous-processus ne repris par profileur
  • regarder dans, le piratage PasteScript commande « servir » de sorte que les sous-processus obtiendraient profilées

Une autre mise à jour:

Après bricoler beaucoup, coller profileur dans divers endroits et se familiariser avec intérieur PasteScript, j'ai découvert que la charge CPU constante disparaît si l'application est lancée sans paramètre « --reload » (ce drapeau indique Paster de se remettre en marche si des changements de code , à portée de main dans le développement), ce qui est bien dans un environnement de production.

Était-ce utile?

La solution

profilage pourrait vous aider à apprendre un peu ce qu'il fait. Si la sortie de votre sorte par « temps », vous verrez quelles sont les fonctions ingurgitant le temps cpu, ce qui devrait vous donner quelques bons conseils.

Autres conseils

Comme vous l'avez dit, en mode --reload, Coller balaie le système de fichiers chaque seconde pour voir si l'un des fichiers chargés ont changé. Si elles ont, puis Coller le processus recharge. Vous pouvez également dire manuellement Coller pour surveiller les modules de code non-Python pour les changements si on le souhaite.

Vous pouvez modifier l'intervalle de recharge avec l'option --reload intervalle, cela réduira l'utilisation du processeur lors de l'utilisation --reload car il balaiera moins souvent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top