Aller au contenu

CPU à bloc - load average élevé et pas de SWAP


lebel

Sujets conseillés

Je vous soumets mon problème.

J'ai un site avec un forum assez fréquenté (PunBB) sur un dédié Athlon 3000+ 512Mo

Un top quand c'est calme ressemble à çà :

18:33:50 up 1 day, 22:50,  1 user,  load average: 2.92, 3.33, 4.55

88 processes: 82 sleeping, 5 running, 1 zombie, 0 stopped

CPU states:  72.2% user,  13.6% system,  0.0% nice,  14.2% idle

Mem:    496556K total,  473556K used,    23000K free,    42140K buffers

Swap:  497972K total,        0K used,  497972K free,  314180K cached

  PID USER    PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM  TIME COMMAND

22236 webusers  15  0 29324  10M  6712 S    10.1  2.2  1:00 httpd

3643 webusers  15  0 29104 9752  5360 S    4.9  1.9  0:03 httpd

4393 webusers  15  0 29084 9380  5012 S    3.9  1.8  0:00 httpd

22217 webusers  15  0 29152  11M  6848 S    3.7  2.2  0:29 httpd

22229 webusers  15  0 29356  10M  6576 S    3.5  2.2  0:28 httpd

3634 webusers  15  0 29096 9988  5608 S    3.1  2.0  0:03 httpd

4012 webusers  15  0 28972 9520  5260 S    3.1  1.9  0:02 httpd

4217 webusers  15  0 29160 9516  5112 S    3.1  1.9  0:01 httpd

22244 webusers  15  0 29100  10M  6160 S    2.9  2.1  0:58 httpd

22245 webusers  15  0 29320  10M  6536 S    2.9  2.2  1:09 httpd

3561 webusers  15  0 29068 9684  5328 S    2.7  1.9  0:05 httpd

3546 webusers  15  0 29112 9744  5356 S    2.5  1.9  0:04 httpd

4023 webusers  15  0 29084 9692  5324 S    1.7  1.9  0:02 httpd

4529 mysql    17  0 13812  11M  1228 R    1.7  2.3  0:00 mysqld

22222 webusers  15  0 29488  10M  6356 S    1.5  2.2  0:57 httpd

22237 webusers  15  0 29136  10M  6328 S    0.9  2.1  0:58 httpd

3555 webusers  15  0 29100 9684  5296 S    0.9  1.9  0:04 httpd

mais çà monte parfois très haut !

89% de CPU et un load average à plus de 15 !

Il semble que cela soit MySQL qui soit le fautif.

Je pense avoir besoin de quelques conseils d'optimisation pour mon my.cnf pour que ma mémoire SWAP soulage mon processeur qui prend tout dans le gueule (alors que mon serveur n'a jamais swappé en 2 ans d'utilisation).

Merci pour vos conseils éclairés !

JE viens de mettre çà en place

set-variable = connect_timeout=20

set-variable = wait_timeout=60

set-variable = long_query_time=10

set-variable  = max_connections=100

set-variable  = wait_timeout=20

set-variable  = interactive_timeout=60

set-variable  = key_buffer_size=50M

set-variable  = myisam_sort_buffer_size=50M

log-slow-queries = /home/mysql-data/slow-query.log

Est ce que je suis dans le vrai ?

Modifié par lebel
Lien vers le commentaire
Partager sur d’autres sites

Sur un mono processeur une charge restant supérieure à 1 est anormale.

Donc même là c'est trop....

Difficile de dire ce qui consomme alors que tu ne nous donne le résultat du "top" que lorsque le système est "calme" (du moins selon tes critères).

Je ne vois pas sur ce résultat d'utilisation anormale de ressource de la part de mysql. Mais dans le doute, tu peux lancer un "myisamchk --recover *.MYI" dans le répertoire des données mysql. Tu as peut-être une erreur dans l'un de tes index...

Il semble par contre que Apache ait parfois quelques problèmes. Un process httpd qui consomme 10% de CPU peut révéler un problème de conception de tes pages. As-tu des modules spécifiques en plus de punBB ?

Dan

Lien vers le commentaire
Partager sur d’autres sites

Je ne vois pas sur ce résultat d'utilisation anormale de ressource de la part de mysql. Mais dans le doute, tu peux lancer un "myisamchk --recover *.MYI" dans le répertoire des données mysql. Tu as peut-être une erreur dans l'un de tes index...

On peut lancer cette commande où ?

Il semble par contre que Apache ait parfois quelques problèmes. Un process httpd qui consomme 10% de CPU peut révéler un problème de conception de tes pages. As-tu des modules spécifiques en plus de punBB ?

J'ai fait un test à pleine charge en fermant le forum ! Le load average tombe de façon drastique donc çà semble être lui qui soit source de problème. D'ailleurs toutes les slow query proviennent du forum.

Lien vers le commentaire
Partager sur d’autres sites

On peut lancer cette commande où ?

J'ai fait un test à pleine charge en fermant le forum ! Le load average tombe de façon drastique donc çà semble être lui qui soit source de problème. D'ailleurs toutes les slow query proviennent du forum.

La commande "myisamchk" fait partie des outils mysql.

Il faut te mettre comme root sous putty dans le répertoire de données mysql et la lancer.

Le forum c'est du mysql et du http aussi. Donc le fait de fermer le forum fait baisser la charge de ces deux applis, pas seulement celle de mysql.

Tu as quelle version de mysql ? Parce qu'une version 4 permet d'utiliser un cache.

C'est efficace !

Lien vers le commentaire
Partager sur d’autres sites

La commande "myisamchk" fait partie des outils mysql.

Il faut te mettre comme root sous putty dans le répertoire de données mysql et la lancer.

Le forum c'est du mysql et du http aussi. Donc le fait de fermer le forum fait baisser la charge de ces deux applis, pas seulement celle de mysql.

Tu as quelle version de mysql ? Parce qu'une version 4 permet d'utiliser un cache.

C'est efficace !

<{POST_SNAPBACK}>

ouais j'ai une version 3.23 !

compliquée une MAJ de version MySQL pour un mec qui capte rien en linux ? :fou:

Lien vers le commentaire
Partager sur d’autres sites

J'ai fait le myisamchk mais j'avais une erreur une fois l'opération faite.

donc j'ai du faire un REPAIR TABLE pour que tout se remette en place.

Est-ce un signe de problème ?

J'ai une Debian de chez Sivit comme distrib

Lien vers le commentaire
Partager sur d’autres sites

12:28:54 up 2 days, 16:45,  1 user,  load average: 6.05, 4.33, 2.73

103 processes: 88 sleeping, 14 running, 1 zombie, 0 stopped

CPU states:  86.6% user,  13.4% system,  0.0% nice,  0.0% idle

Mem:    496556K total,  486704K used,    9852K free,    32436K buffers

Swap:  497972K total,    55968K used,  442004K free,  243900K cached

  PID USER    PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM  TIME COMMAND

3460 webusers  17  0 29392 8056  5308 R    27.5  1.6  0:43 httpd

2779 webusers  16  0 29124 7596  5120 S    20.5  1.5  1:03 httpd

11891 mysql    16  0 70612  54M  1236 S    3.5 11.2  0:00 mysqld

11829 webusers  15  0 29084 5912  3524 S    1.7  1.1  0:00 httpd

11824 webusers  15  0 28984 6012  3740 S    1.5  1.2  0:00 httpd

11834 webusers  15  0 29076 5884  3524 S    1.5  1.1  0:01 httpd

3461 webusers  15  0 29092 7280  4832 S    1.3  1.4  0:16 httpd

4153 webusers  15  0 29044 7564  5168 S    1.3  1.5  0:40 httpd

11868 webusers  15  0 29064 5984  3632 S    1.3  1.2  0:00 httpd

3804 webusers  15  0 29116 7908  5440 S    1.1  1.5  0:45 httpd

7661 webusers  15  0 29060 7284  4872 S    1.1  1.4  0:23 httpd

10263 webusers  15  0 29084 6628  4192 S    1.1  1.3  0:08 httpd

11835 webusers  15  0 29076 6336  3972 S    1.1  1.2  0:01 httpd

11828 webusers  15  0 28876 5468  3296 S    0.9  1.1  0:00 httpd

11873 webusers  15  0 26824 2476  1756 S    0.9  0.4  0:00 httpd

5156 webusers  15  0 29216 8268  5808 S    0.7  1.6  0:29 httpd

6919 webusers  15  0 29120 7776  5308 S    0.7  1.5  0:29 httpd

La grande nouveauté (en raison des nouveaux paramètres mis ds le my.cnf), c'est que çà swap un peu (mais vraiment un peu)

Lien vers le commentaire
Partager sur d’autres sites

J'ai fait le myisamchk mais j'avais une erreur une fois l'opération faite.

donc j'ai du faire un REPAIR TABLE pour que tout se remette en place.

Est-ce un signe de problème ?

Une erreur est toujours un problème... mais si myisamchk l'a réparée c'est bon maintenant.

Tu as par contre toujours beaucoup de CPU utilisé par Apache...

Tu as mis quelles valeurs dans le httpd.conf ?

Un peu de swap ? Je trouve que 50 MB de swap c'est beaucoup pour une bécane de 512MB.

Ton process mysqld prend 54MB, c'est beaucoup pour ta config. Il faudrait réduire les paramètres de /etc/my.cnf, notamment le key_buffer_size.

Ta base fait quelle taille totale, hors index ?

Lien vers le commentaire
Partager sur d’autres sites

Une erreur est toujours un problème... mais si myisamchk l'a réparée c'est bon maintenant.

Tu as par contre toujours beaucoup de CPU utilisé par Apache...

Tu as mis quelles valeurs dans le httpd.conf ?

Un peu de swap ? Je trouve que 50 MB de swap c'est beaucoup pour une bécane de 512MB.

Ton process mysqld prend 54MB, c'est beaucoup pour ta config. Il faudrait réduire les paramètres de /etc/my.cnf, notamment le key_buffer_size.

Ta base fait quelle taille totale, hors index ?

<{POST_SNAPBACK}>

Ma base fait environ 850Mo

J'ai mis le key_buffer_size à 30M au lieu de 50M; le swap est tombé 6800k

Pour mon httpd.conf, voici les principales valeurs:

Timeout 60

KeepAlive Off

MaxKeepAliveRequests 100

KeepAliveTimeout 5

MinSpareServers 5

MaxSpareServers 10

StartServers 5

MaxClients 150

MaxRequestsPerChild 5000

Pour MySQL qqs valeurs aussi:

long_query_time 10

max_connections 100

max_user_connections 0

myisam_sort_buffer_size 50M

query_buffer_size 0

log_bin OFF

merci encore pour ton aide précieuse parce franchement, j'en vois vraiment pas le bout ! :huh:

PS : qd je fais mon top, j'ai aussi un sale msg "Unknown HZ value! (92) Assume 100" qui se met ! g fait un tcket au support de mon hébergeur à ce propos !

Lien vers le commentaire
Partager sur d’autres sites

A pleine charge, je remarque que dans mon server status j'ai des lignes avec comme

Req Milliseconds required to process most recent request

1752306659

1752306605

etc ...

sur une page où il n'y a pas de problème (puisque sur les autres demandes tout se passe bien)

Comment je peux régler ce problème ? La charge processeur pourrait bien venir de là non ?

Lien vers le commentaire
Partager sur d’autres sites

personne pour m'aider ?

mon serveur rame lamentablement ! :wacko:

Et c'est bien Apache qui fait tout merdé

J'ai qu'à faire un pkill-9 httpd pour m'en rendre compte

Modifié par lebel
Lien vers le commentaire
Partager sur d’autres sites

Il faut diminuer le MaxRequestPerChild ... 5000 c'est énorme.

J'utilise une valeur entre 100 et 200 sur le serveur du HUb, sans grand changement dans les performances.

Lorsqu'un process http sert une requête, il alloue de la mémoire. Et cette mémoire ne sera libérée que lorsque le process sera fini.

Donc si la première requête sur 5000 demande 16Mb de mémoire, et que les autres ne demandent que quelques KB, ce process aura 16MB de RAM alloués jusqu'à la 5000 ème requête.

Dan

Lien vers le commentaire
Partager sur d’autres sites

effectivement çà a diminué un peu la charge (je l'ai mis à 100) mais j'ai quand même tjs Apache qui délire totalement ! Ca peut venir d'où ?

18:51:02 up 3 days, 23:27,  1 user,  load average: 14.96, 13.39, 12.89

95 processes: 78 sleeping, 9 running, 8 zombie, 0 stopped

CPU states:  91.0% user,  9.0% system,  0.0% nice,  0.0% idle

Mem:    495900K total,  402768K used,    93132K free,    15724K buffers

Swap:  497972K total,    11000K used,  486972K free,  297536K cached

  PID USER    PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM  TIME COMMAND

22582 webusers  15  0 29200 8896  4420 S    8.0  1.7  0:00 httpd

22592 webusers  15  0 29192 8772  4328 S    3.9  1.7  0:01 httpd

22590 webusers  15  0 29224 8812  4336 S    3.3  1.7  0:00 httpd

22593 webusers  15  0 29008 7984  3760 S    3.3  1.6  0:00 httpd

22587 webusers  15  0 29016 8344  4068 S    3.2  1.6  0:00 httpd

22516 webusers  15  0 29220 8804  4328 S    2.5  1.7  0:00 httpd

22591 webusers  15  0 29188 8940  4484 S    2.5  1.8  0:00 httpd

22586 webusers  15  0 29188 8788  4332 S    2.3  1.7  0:01 httpd

22517 webusers  15  0 29200 8884  4408 S    2.2  1.7  0:02 httpd

22543 webusers  15  0 29108 8664  4288 S    2.1  1.7  0:00 httpd

22402 webusers  15  0 29112 8904  4524 S    2.0  1.7  0:00 httpd

22545 webusers  15  0 29192 8800  4392 S    2.0  1.7  0:01 httpd

22403 webusers  15  0 29216 8528  4056 S    1.4  1.7  0:00 httpd

22514 webusers  15  0 29196 8784  4320 S    1.3  1.7  0:01 httpd

22584 webusers  15  0 29112 8692  4312 S    1.3  1.7  0:00 httpd

22515 webusers  15  0 29172 8864  4424 S    1.2  1.7  0:00 httpd

22588 webusers  15  0 29172 8708  4280 S    1.2  1.7  0:00 httpd

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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