Ok, notre nouvelle version a des pics de 100% cpu sur chaque serveur à intervalles aléatoires. Pendant de longues durées, cela rend le site totalement insensible - ce sera aux heures de pointe lorsque des personnes de différents pays se connecteront au site, etc.
Nous avons examiné perfmom, les profileurs de mémoire, le profileur CLR, les profileurs sql, le profileur de fourmis Red Gate, essayé les tests de charge dans UAT - mais nous ne pouvons même pas reproduire le problème. Cela pourrait signifier que seuls des milliers d'utilisateurs frappant le site en direct peuvent le faire.
Un modèle que nous avons remarqué est que le nouveau code - la version cassée - utilise en fait sensiblement moins de threads.
Nous utilisons également le ressort pour le CIO - cela a-t-il une réputation de lit?
Pour aggraver les choses, nous ne pouvons pas déployer pour vivre en raison de l'impact sur l'entreprise - nous ne pouvons donc pas réduire le problème à un sous-ensemble des nouvelles fonctionnalités que nous avons ajoutées.
Nous sommes vraiment détruits - quelqu'un a-t-il des cicatrices de bataille qui pourraient nous sauver quelques vies?
Réponses:
Je suggère de faire des vidages de mémoire et de les analyser dans WinDdg avec Sos. J'ai corrigé quelques problèmes sur notre production que je ne pourrais probablement pas diagnostiquer sans WinDbg.
Tess Fernandez a un excellent blog où vous pouvez apprendre à analyser les vidages de mémoire.
la source
Cela est généralement dû à un grand nettoyage des objets à longue durée de vie dans le CPG ( stackoverflow a eu ce problème, voir le lien ). Stockez-vous de nombreuses collections d'objets dans le cache ou la session?
Assaut par GC
Je vous recommande également de créer et de configurer un nouveau serveur en production à tester. Si vous avez une folie aléatoire et ne savez pas pourquoi et ne pouvez pas le reproduire, je pointerais du doigt le matériel ou la configuration, pas le code.
la source
S'agit-il d'un serveur virtuel avec des ressources partagées ou d'un serveur physique? Si c'est le premier, vous pourriez peut-être envisager de consacrer des ressources à ce serveur. Bonne chance...
la source
Essayez d'utiliser un
cache server
comme frontendApache Traffic Server (ATS)
.Bien que cela ne résoudra pas le problème, il peut être utile de l'identifier car vous déplacerez en même temps la charge potentiellement nuisible du backend (voir si le frontend a également des problèmes) et réduirez les choses sur le backend afin qu'il soit plus facile de voir ce qui ne va pas.
la source
Essayer de deviner la faute sans les données est inutile. Oui, quelqu'un sur stackoverflow ou dans votre équipe d'ingénieurs pourrait avoir de la chance, mais c'est juste une mauvaise ingénierie, et vous ne pouvez pas planifier le temps qu'il vous faudra pour essayer chaque supposition, et si votre trouverait même le problème.
Le CPU à 100% est un peu suspect dans le sens où il est peu probable qu'il s'agisse d'E / S (à condition que la base de données soit une autre boîte, une base de données lente ne devrait pas provoquer 100% de CPU sur les serveurs Web). Vous devez regarder plus près de chez vous.
la source