Aller au contenu

New Message: Warning: The system load average is 15.76


Sujets conseillés

Posté (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+ COMMAND
5009 ... 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é par APeytavin
Posté (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é par Nicolas
Posté

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.


Posté

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


Posté (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.59
Five Minutes - 15.76
Fifteen Minutes - 5.99

top - 21:01:03 up 52 days, 4:37, 0 users, load average: 55.59, 15.76, 5.99
Tasks: 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 st
KiB Mem: 24741992 total, 11923592 used, 12818400 free, 852640 buffers
KiB Swap: 1046520 total, 0 used, 1046520 free, 7049632 cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5009 ... 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
26364 ... 20 0 144m 58m 6580 R 10.4 0.2 0:00.32 /usr/local/php5/bin/php-cgi
26440 ... 20 0 144m 57m 6660 R 10.4 0.2 0:00.32 /usr/local/php5/bin/php-cgi
26358 ... 20 0 144m 57m 6584 R 7.8 0.2 0:00.30 /usr/local/php5/bin/php-cgi

Modifié par APeytavin
Posté

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".


Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...