APeytavin Posté 3 Février 2014 Posté 3 Février 2014 (modifié) Bonjour, Chaque jour je reçois des notifications qui m'indiquent que mon serveur dédié est en surcharge. Voici ce que m'indique le rapport, je vous copie colle la 1ere ligne qui est celle qui semble poser problème : PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND5009 ... 20 0 1546m 1.0g 6996 S 62.7 4.2 2882:56 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/....ovh.net.err --open-files-limit=4096 --pid-file=/usr/local/mysql/data/....pid Je n'y connais rien, mais en lisant ça j'ai l'impression qu'une commande SQL existe depuis 2882 minutes (?!?), et qu'elle dépense 62% du CPU de la machine. A chaque pic de charge, le site devient inaccessible pendant quelques secondes. Une idée pour résoudre ça ? ps : J'ai un forum phpbb, qui est peut être gourmand en sql ? Ou alors wordpress ? Modifié 3 Février 2014 par APeytavin
Nicolas Posté 3 Février 2014 Posté 3 Février 2014 (modifié) Bonjour, Tu peux toujours "restart" le serveur mysql ou kill ton process mysql afin de voir si ca règle le problème. C'est un peu bourrin ... ;-) Sinon avant de faire ça tu peux voir si t'as pas dans les logs des requetes "longues". Il faut aussi voir si la capacité de ton serveur est suffisante par rapport au trafic et produits installés (cms). Modifié 3 Février 2014 par Nicolas
APeytavin Posté 3 Février 2014 Auteur Posté 3 Février 2014 Nicolas merci beaucoup pour ta réponse !!! Je viens de regarder dans PhPmyAdmin pour trouver la requête ou le module qui me bouffe autant de CPU. Dur de s'en sortir la dedans :-/ Je tente un "réparer/optimiser table". On verra si ça change quelque chose.
Dan Posté 3 Février 2014 Posté 3 Février 2014 Hello Antoine, 62% de cpu, ce n'est que 62% d'un cœur de CPU, et tu en as 8 en tout. Donc en fait le max CPU étant de 800% ton process mysql utilise moins de 8% des ressources globales CPU de ton serveur. De plus, c'est une charge instantanée ! Donc cela ne signifie pas que ton process mysql tourne à 62% d'un cœur depuis plus de quelques secondes... pas de panique ! Qu'il ait utilisé 2882 minutes depuis le démarrage du process il y a près de 53 jours, veut dire que depuis le démarrage du serveur (il y a 76 000 minutes) ton process n'a au total utilisé que 4% des ressources CPU en moyenne ! Tu as eu par contre beaucoup de process php-cgi pour l'utilisateur jrme au moment où cette charge a monté. A toi de voir ce que ces process ont effectué. Je t'ai augmenté la limite de MaxClients sur ton serveur parce que tu l'avais atteinte le 30 janvier. Dan
APeytavin Posté 3 Février 2014 Auteur Posté 3 Février 2014 (modifié) Coucou Dan, 1000 merci pour ton message et pour l'augmentation du maxclient ! Ok donc je comprends que c'est plutôt un script CGI. Comment déterminer lequel est gourmand en cpu ? Sur les lignes du rapport généré lors de la surcharge j'ai juste une indication que ça vient de php/cgi mais rien de plus :-/ Je suis un boulet :-D One Minute - 55.59Five Minutes - 15.76Fifteen Minutes - 5.99top - 21:01:03 up 52 days, 4:37, 0 users, load average: 55.59, 15.76, 5.99Tasks: 490 total, 71 running, 417 sleeping, 0 stopped, 2 zombie%Cpu(s): 5.6 us, 0.9 sy, 0.0 ni, 93.4 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem: 24741992 total, 11923592 used, 12818400 free, 852640 buffersKiB Swap: 1046520 total, 0 used, 1046520 free, 7049632 cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND5009 ... 20 0 1546m 1.0g 6996 S 62.7 4.2 2882:56 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/....ovh.net.err --open-files-limit=4096 --pid-file=/usr/local/mysql/data/....pid26364 ... 20 0 144m 58m 6580 R 10.4 0.2 0:00.32 /usr/local/php5/bin/php-cgi26440 ... 20 0 144m 57m 6660 R 10.4 0.2 0:00.32 /usr/local/php5/bin/php-cgi26358 ... 20 0 144m 57m 6584 R 7.8 0.2 0:00.30 /usr/local/php5/bin/php-cgi Modifié 3 Février 2014 par APeytavin
Dan Posté 3 Février 2014 Posté 3 Février 2014 Tu peux, par exemple, lancer un "lsof -p num" avec num étant le numéro d'un process que tu vois en première colonne sur un top ! Il te faudra pour cela deux fenêtres de terminal, parce que ces process risquent de ne pas durer longtemps... On voit tout de même qu'ils durent 30 secondes, mais il faudra être quand même rapide pour lancer le lsof alors que le process est toujours actif. Mais, si tu regardes dans /var/log/mysql/mysql-slow.log tu verras les requêtes mysql qui prennent le plus de temps. Il te suffit de rechercher la première d'une série qui dépasse quelques secondes. Les suivantes n'auront que peu de valeur, vu que le première aura déjà eu tendance à saturer mysql. Tu dois avoir des tables sur lesquelles il te manque des index. Je vois par ailleurs que tu as un forum phpbb qui revient souvent dans ces requêtes "longues".
petitraliko Posté 3 Février 2014 Posté 3 Février 2014 utilise les scripts tuning primer et mysqltuner pour voir si ton mysql est bien configuré
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant