Une application tordue que j'ai été constamment tué en raison de problèmes de mémoire. Le programme a grandi en taille, consommant toute la mémoire du système avant d'être arrêté par le système d'exploitation. Redémarrez et répétez.Le processus de torsion est énorme
C'est sur un serveur virtuel, donc je la mémoire a doublé, et le problème résolu - le démon se stabilise autour de 1,25 Go de mémoire
Quelqu'un at-il des conseils sur la façon dont je peux mieux le profil de ce à dire ce que/où tout le souvenir est aspiré?
Si l'information sur l'application aide, j'utilise le réacteur tordu et internet.timer.TimerService pour interroger une base de données pour les éléments à mettre à jour à travers trois «services». Les éléments à traiter sont placés dans un fichier twisted.internet.defer.DeferredList et leur traitement se déroule dans un bloc deferToThread. Dans le processus différé, il y a une poignée d'opérations de blocage (récupération de pages Web, etc.) et beaucoup d'analyse HTML (belle soupe et autres bibliothèques). J'ai suggéré que la taille de reactor.threadpool soit de 10 et que chaque 'service' défère pour filer en utilisant un SemaphoreService qui a 10 jetons. Je m'attendais vraiment à ce que ce démon atteigne un maximum de 400 Mo de mémoire, et non 3 fois plus.
Oh, c'est une bonne idée! Je vous remercie! Je vais certainement essayer cette approche! –
Une question tordue ici ci-dessous, a eu recommandation recomendation pour la découverte de fuite de mémoire. En réalité, cela pourrait être très agréable à utiliser en combinaison avec l'approche ssh que j'ai suggéré plus tôt. Là-bas, vous avez appelé le couteau suisse pour l'exploration interactive de la mémoire :) – jbreicis