Récemment, le processeur de mon serveur est devenu très élevé.
La charge du processeur est en moyenne de 13,91 (1 min) 11,72 (5 min) 8,01 (15 min) et mon site n'a eu qu'une légère augmentation du trafic.
Après avoir exécuté une commande supérieure, j'ai vu que MySQL utilisait 160% de CPU!
Récemment, j'ai optimisé des tables et je suis passé à des connexions persistantes. Cela pourrait-il amener MySQL à utiliser de grandes quantités de CPU?
Réponses:
Tout d'abord, je dirais que vous voulez probablement désactiver les connexions persistantes car elles font presque toujours plus de mal que de bien.
Deuxièmement, je dirais que vous voulez vérifier vos utilisateurs MySQL, juste pour vous assurer qu'il n'est pas possible pour quiconque de se connecter à partir d'un serveur distant. C'est également un élément de sécurité majeur à vérifier.
Troisièmement, je dirais que vous voulez activer le journal des requêtes lentes MySQL pour garder un œil sur les requêtes qui prennent beaucoup de temps, et l'utiliser pour vous assurer que vous n'avez aucune requête verrouillant les tables clés pendant trop longtemps.
D'autres choses que vous pouvez vérifier sont d'exécuter la requête suivante alors que la charge du processeur est élevée:
Cela vous montrera toutes les requêtes en cours d'exécution ou dans la file d'attente à exécuter, ce qu'est la requête et ce qu'elle fait (cette commande tronquera la requête si elle est trop longue, vous pouvez utiliser SHOW FULL PROCESSLIST pour voir le texte complet de la requête) .
Vous aurez également besoin de garder un oeil sur des choses comme la taille de vos tampons, cache de table , cache de requêtes et innodb_buffer_pool_size (si vous utilisez InnoDB tables) que toutes ces allocations de mémoire peut avoir une incidence sur les performances des requêtes qui peuvent causer MySQL manger du processeur.
Vous voudrez probablement aussi relire les éléments suivants car ils contiennent de bonnes informations.
C'est aussi une très bonne idée d'utiliser un profileur. Quelque chose que vous pouvez activer quand vous le souhaitez et qui vous montrera quelles requêtes votre application est en cours d'exécution, s'il y a des requêtes en double, combien de temps elles prennent, etc., etc. Un exemple de quelque chose comme celui-ci est celui sur lequel j'ai travaillé. PHP Profiler mais il y en a beaucoup là-bas. Si vous utilisez un logiciel comme Drupal, Joomla ou Wordpress, vous voudrez vous renseigner au sein de la communauté car il existe probablement des modules disponibles pour eux qui vous permettent d'obtenir ces informations sans avoir besoin d'intégrer manuellement quoi que ce soit.
la source
Comme il s'agit du meilleur article si vous recherchez une utilisation ou une charge élevée du processeur sur MySQL, j'ajouterai une réponse supplémentaire:
Le 1er juillet 2012, une seconde intercalaire a été ajoutée à l'heure UTC actuelle pour compenser le ralentissement de la rotation de la Terre dû aux marées. Lors de l'exécution de ntp (ou ntpd), cette seconde a été ajoutée à l'horloge de votre ordinateur / serveur. MySQLd ne semble pas aimer cette seconde supplémentaire sur certains systèmes d'exploitation et génère une charge CPU élevée. La solution rapide est (en tant que root):
la source
date
" && service ntp start L'utilisation du processeur MySQL a instantanément chuté de 50 à 100% à 0 à 1%sudo service ntpd stop
sur cette configuration.Si ce serveur est visible du monde extérieur, cela vaut la peine de vérifier s'il a beaucoup de demandes de connexion du monde extérieur (c'est-à-dire des personnes essayant de s'y introduire)
la source