Version complète: sur le forum Webmaster Hub : probleme / role RAM sur serveur dedie OVH - Redhat 7.2
Webmaster Hub > Informatique & Internet > PC-Gyver > Linux, freebsd
antouane
Hello all,

bravo pour ce forum vrmt utile !
je lis bcp de choses tres interessante ici et je me permet de poster une question

j ai un prob de stabilite de mon serveur, donc je suis en train d explorer un peu tous les pistes
en gros, le serveur plante 2/3fois /j sans que je comprenne vrmt pourquoi


j aimerai bien comprendre une chose : comment fonctionne la ram et est ce que mes plantage peuvent etre dus a ca :



1:41pm up 2:09, 2 users, load average: 1,22, 0,89, 0,68
99 processes: 97 sleeping, 1 running, 1 zombie, 0 stopped
CPU0 states: 5,4% user, 0,4% system, 0,0% nice, 93,2% idle
CPU1 states: 3,0% user, 2,0% system, 0,0% nice, 95,0% idle

Mem: 497328K av, 480212K used, 17116K free, 0K shrd, 37292K buff
Swap: 522104K av, 0K used, 522104K free 345500K cached


voila ce que me donne mon TOP
donc en fait, j aimerai savoir si c est "normal" ou si c est un vrai probleme d avoir 70-90% de sa RAM utilisé au bout d 1h
j ai bien compris et observé que c lorsque le serveur commence a swapper que cela pose probleme et que ca plante

le site contient pas mal de requette sur une bdd de > 10k annonces avec une 20aine de champs

lorsque je trie par MEM
on peu voir au il n y a pas de process trop mechant
ce sont des mysql et des appache qui prenne 1%


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

25483 nobody 9 0 6684 6684 5128 S 0,0 1,3 0:01 httpd
16332 mysql 14 0 6356 6356 1216 R 5,1 1,2 0:00 mysqld
15852 mysql 14 0 6356 6356 1216 R 4,9 1,2 0:00 mysqld
22462 mysql 17 0 6356 6356 1216 R 5,5 1,2 0:00 mysqld
5425 mysql 9 0 6352 6352 1216 S 0,0 1,2 0:01 mysqld
12734 mysql 4 0 6352 6352 1216 S 0,0 1,2 0:01 mysqld
17187 mysql 9 0 6352 6352 1216 S 0,0 1,2 0:01 mysqld
21991 nobody 9 0 6288 6288 5532 S 0,0 1,2 0:01 httpd
17530 nobody 9 0 5984 5984 5152 S 1,9 1,2 0:02 httpd
25128 nobody 9 0 5832 5832 5084 S 0,0 1,1 0:00 httpd

le 25483 est une requette d affichage d image
(vu au travers de ovh-status qui permet de linker les PID )

lorsque je reboot, j ai environ 120m de ram prise et ca monte a 80-90% en 1h environ de charge normal ( 6 K vu / j )

je me demande donc vrmt si c "logik" que les process s alloue de la memoire au fur et a mesure pour tendre vers 100%
ou si au contraire c est un probleme et c est une des raisons de mes plantage

bon il suffisai d en parler pour que ca plante now 14h
enfin c est pqs plante mais les pages de mon site sont ultra lentes


123 processes: 122 sleeping, 1 running, 0 zombie, 0 stopped
CPU0 states: 0,4% user, 0,4% system, 0,0% nice, 98,2% idle
CPU1 states: 7,1% user, 1,3% system, 0,0% nice, 90,4% idle
Mem: 497328K av, 462008K used, 35320K free, 0K shrd, 35552K buff
Swap: 522104K av, 0K used, 522104K free 325860K cached


si quelqu un peut m expliquer un peu et me donner quelques piste je le remercie par avance !
Dan
Bonjour,

La première piste à explorer est celle de mysql.
Il faut regarder le fichier /var/log/mysql/slow-query.log, et s'il n'existe pas, le créer, lui donner mysql comme propriétaire et groupe et 640 comme permissions.

Ensuite, il faut redémarrer mysql pour que ce fichier soit pris en compte.

Il est possible que tu réalises que certaines requêtes prennent longtemps, et dans ce cas je te suggère de stopper mysql et lancer "myisamchk --force --recover *.MYI" dans chaque répertoire de base de données (/home/mysql/*/) et t'assurer que tous les champs après "WHERE" dans ces requêtes ont bien un index associé.

L'utilisation de 90-99% de la mémoire est normale sous Linux.

Dan
antouane
hello dan

thanx pour ta reponse

oui je viens de comprendre ( je voulais etre sur ) que c est normal de prendre 90% de la ram pour linux

( mrtg )
http://91.121.12.165/~focusfra/mrtg/
apparement ce n est vrmt pas la charge propre au trafic qui pose prob



j avais lu une de tes rep et donc j ai deja creer le rep pour les slow-query
en fait il a vrmt pas grand chose dedans au moment ou le site est mega lent





ds la derniere heure jai juste ca :


Time Id Command Argument
# Time: 070108 12:39:25
# User_AT_Host: [] @ localhost []
# Query_time: 5 Lock_time: 0 Rows_sent: 1 Rows_examined: 46001
use focusfra;
SELECT * FROM ANNONCES a,DEPARTEMENT b WHERE a.IDDEPARTEMENT=b.IDDEPARTEMENT
AND a.ACTIF=1 AND a.LOCA!=1 AND a.PHOTO!='' AND b.IDREGION=5 ORDER by rand() DESC Limit 0,1;
/usr/sbin/mysqld, Version: 3.23.58-log, started with:
Tcp port: 0 Unix socket: /var/lib/mysql/mysql.sock
Time Id Command Argument

mes IDDEPART et ACTIF LOCA ont bien des INDEX

mais je pense comme toi que ca vien de SQL


Statistiques sur les requêtes: Depuis son démarrage, 70 991 requêtes ont été envoyées au serveur.
Total ø par heure ø par minute ø par seconde
71 k 64,52 k 1,08 k 17,92

je ne me rends pas compte si c est bcp

je v faire ton "myisamchk --force --recover *.MYI"

car je viens de voir une stat qui me fait peur:

Select_full_join 682 Le nombre de jointures qui n'ont pas utilisé d'index. Si cette valeur est supérieure à 0, vérifiez soigneusement les indexes de vos tables.
Select_full_range_join 28 Le nombre de jointures qui ont utilisé une recherche par plage sur une table de référence.
Select_range 2 k Le nombre de jointures qui ont utilisé des plages sur la première table. (Normalement non critique même si cette valeur est élevée.)
Select_range_check 456 Le nombre de jointures sans clés qui vérifient l'utilisation de clé à chaque enregistrement. (Si ceci est supérieur à 0, vérifiez soigneusement les indexes de vos tables.)
Select_scan 18 k Le nombre de jointures qui ont nécessité le parcours complet de la première table.

est ce un GROS probleme qui pourai expliker les ralentissements ?

autre piste :
les warning quand je relance appache :


Démarrage de httpd : [Mon Jan 8 15:30:24 2007] [warn] NameVirtualHost 91.121.12.165:80 has no VirtualHosts
[Mon Jan 8 15:30:24 2007] [warn] NameVirtualHost 91.121.12.165:80 has no VirtualHosts
[Mon Jan 8 15:30:24 2007] [warn] NameVirtualHost 91.121.12.165:80 has no VirtualHosts
[Mon Jan 8 15:30:24 2007] [warn] NameVirtualHost 91.121.12.165:80 has no VirtualHosts
[Mon Jan 8 15:30:24 2007] [warn] NameVirtualHost 91.121.12.165:80 has no VirtualHosts
[Mon Jan 8 15:30:24 2007] [warn] NameVirtualHost 91.121.12.165:80 has no VirtualHosts
[Mon Jan 8 15:30:24 2007] [warn] NameVirtualHost 91.121.12.165:80 has no VirtualHosts
[Mon Jan 8 15:30:24 2007] [warn] NameVirtualHost 91.121.12.165:80 has no VirtualHosts
[Mon Jan 8 15:30:24 2007] [warn] NameVirtualHost 91.121.12.165:80 has no VirtualHosts
[Mon Jan 8 15:30:24 2007] [warn] NameVirtualHost 91.121.12.165:80 has no VirtualHosts
[Mon Jan 8 15:30:24 2007] [warn] NameVirtualHost 91.121.12.165:80 has no VirtualHosts
[Mon Jan 8 15:30:24 2007] [warn] NameVirtualHost 91.121.12.165:80 has no VirtualHosts
[Mon Jan 8 15:30:24 2007] [warn] NameVirtualHost 91.121.12.165:80 has no VirtualHosts
[Mon Jan 8 15:30:24 2007] [warn] NameVirtualHost 91.121.12.165:80 has no VirtualHosts
[Mon Jan 8 15:30:24 2007] [warn] NameVirtualHost 91.121.12.165:80 has no VirtualHosts
[Mon Jan 8 15:30:24 2007] [warn] NameVirtualHost 91.121.12.165:80 has no VirtualHosts
[ OK ]
[root_AT_ns23345 root]#

cela correspond a une ligne qui s est creer plusieurs fois ds /usr/local/apache/conf/httpd.conf
pendant j essayais de creer des sous domaines et de virtualhost


<VirtualHost 91.121.12.165>
DocumentRoot /home/focus/sd/uk/www
User focus
Group users
ServerName uk.focus.com
CustomLog logs/uk.focus.com-access_log combined
ScriptAlias /cgi-bin/ /home/focus/cgi-bin/
</VirtualHost>

NameVirtualHost 91.121.12.165 <============= cette ligne la qui est presente genre 15 fois


NameVirtualHost 91.121.12.165 <============= je peux l enlenver ?





je ne savais pas au il fallai mettre des INDEX sur chaque champ ki est utilise apres un WHERE
a ce moment la, limite je peux mettre TOUS les champs de mes grosses tables en index ?
cela pose t il un probleme d avoir trop d index ?
les clés primaires sont deja en index ?

merci bcp de tes indics ds tous les cas, je vais faire le myisamchk deja
Dan
Il ne faut pas mettre des index partout, parce que le remède risque d'être pire que le mal.

Les lignes excédentaires NameVirtualHost peuvent être supprimées. C'est un bug depuis que OVHM inclut l'IP failover.
FenX
Pour Info linux utilise toute la ram dispo donc c'est normal. Tu n'as pas de Swap (cf : Swap: 522104K av, 0K used, 522104K free 345500K cached) donc cela ne vient vraisemblablement de la RAM. Regarde tes logs d'erreur et essaye de déterminer ce qui s'est passé juste avant le plantage. Cela peut te donner une piste (hhpd.conf ou mysql a optimiser peut etre).
antouane
merci aussi de ta rep FenX

en fait ca ne plante plus ( c est deja ca )
c est juste que par moment , le site est super lent et now on peut etre sur que ca ne vient pas de la charge en elle meme
vu l extrait de mon TOP / mrtg

il s agit donc vraissemblablement de MYSQL
( a moins que ce ne soit le DNS , mais j y crois vrmt pas trop )

sur le dedie ovh vous conseillez de mettre le dedier comme serveur DNS ?

serveur DNS primaire: nsxxxx.ovh.net
serveur DNS secondaire : ns.ovh.net

ou de laisser dns.ovh.net / ns.ovh.net ?


je pense donc que mes ralentissement sont dus a une mauvaise optimisation de mysql

en suivant le conseil de Dan,
j ai fait le je v faire ton "myisamchk --force --recover *.MYI"

et j ai limite le slow-query a 2
ds my.cnf

set-variable = long_query_time=2
log-slow-queries = /var/log/mysql/slow-query.log


pour avoir le plus de requette possible logged
et ensuite, je vais mettre un index sur chaque champ qui fait l object d un WHERE
( meme si c est en grande partie deja fait )

d autre piste pour resoudre ce :


Select_full_join 682 Le nombre de jointures qui n'ont pas utilisé d'index. Si cette valeur est supérieure à 0, vérifiez soigneusement les indexes de vos tables.

qui vient du (etat serveur sql ds phpmyadmin)

ma base fait 12 tables et c est vrai qu il y q bcp de requette dans tous les sens, mais j ai deja essaye de simplifier le plus possible


ce qui me chagrine un peu, c est que tout ca tournait plutot bien sur un mutualise xxl
mais ca devenait un poil lent, et vu la progression du nombre de visiteurs, nous avons voulu opte pour le dedie
et la c est par moment PLUS lent que le mut.

Statistiques sur les requêtes: Depuis son démarrage,
46 160 requêtes ont été envoyées au serveur.
Total ø par heure ø par minute ø par seconde
46 k 99,39 k 1,66 k 27,61

je ne me rends pas comte si c est bcp ou non ?
Dan
Une solution serait de passer mysql en version 4.0.x voire 4.1.x ...
Avec le fichier /etc/my.cnf correctement paramétré, tu aurais au moins l'avantage du cache inhérent à la version 4 de mysql.

Mais je pense que une bonne utilisation des versions 4.x, 512Mb sont "un peu juste".

Que donne la commande "vmstat 1 20" ? Peux-tu poster le résultat ici ?

Dan


PS: merci de faire attention à éviter le SMS dans tes posts q_smallexcla.gif
antouane
Pardonne moi pour le langage sms, je tape un peu vite et qui plus est, je suis sur un clavier qwerty hypocrite.gif
bon c'est vrai que ce n'est une excuse

CODE
[root_AT_ns23345 root]# vmstat 1 20
   procs                      memory    swap          io     system         cpu
r  b  w   swpd   free   buff  cache  si  so    bi    bo   in    cs  us  sy  id
0  0  0      0 142648  28076 249088   0   0    37    34  143   195  12   4  84
0  0  0      0 142644  28076 249088   0   0     0     0  112    32   0   0 100
0  0  0      0 142636  28084 249088   0   0     0   160  147    36   0   0 100
0  0  0      0 142636  28084 249088   0   0     0     0  110    30   0   0 100
0  0  0      0 142636  28084 249088   0   0     0     0  114    30   0   0 100
0  0  0      0 143644  28084 249084   0   0     0     0  122   150   1   1  98
0  0  0      0 143644  28084 249084   0   0     0     0  110    31   0   0 100
0  0  0      0 143640  28088 249084   0   0     0    96  123    40   0   0 100
0  0  0      0 143632  28088 249084   0   0     0     0  109    32   0   0 100
0  0  0      0 143632  28088 249084   0   0     0     0  107    30   0   0 100
0  0  0      0 143632  28088 249084   0   0     0     0  124    50   0   0 100
0  0  0      0 143632  28088 249084   0   0     0     0  121    30   0   0 100
0  0  0      0 143624  28096 249084   0   0     0   140  139    36   0   0 100
0  0  0      0 143632  28096 249084   0   0     0     0  109    34   0   0 100
0  0  0      0 143516  28096 249092   0   0     8     0  125   133   0   0 100
0  0  0      0 143516  28096 249092   0   0     0     0  133    46   0   0 100
0  0  0      0 143516  28096 249092   0   0     0     0  112    32   0   0 100
0  0  0      0 143500  28112 249092   0   0     0    68  111    44   0   0 100
0  0  0      0 143500  28112 249092   0   0     0     0  119    28   0   0 100
0  0  0      0 143500  28112 249092   0   0     0     0  110    31   0   0 100
[root_AT_ns23345 root]#



voila pour le vmstat
Dan
Désolé, j'avais oublié que la version Redhat 7.2 avait une ancienne version de procps (2.0.7 je pense)
Il te manque la colonne wa tout à droite, qui donne les infos de IO-Wait pour le CPU.
antouane
hum
je la recupere comment cette colonne wa IO wait ?
Dan
Il faut installer une version plus récente de procps... qui donne aussi une nouvelle version de top, ps, ... etc.
antouane
pour les gens qui tomberont sur ce fil depuis google en tapant : maj procps

CODE
wget http://procps.sourceforge.net/procps-3.2.6.tar.gz
tar xzvf procps-3.2.6.tar.gz
cd procps-3.2.6
make
make install


ok donc j ai maj procps et mon "vmstat 1 20" donne :

CODE
[root_AT_ns23345 procps-3.2.6]# vmstat 1 20
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
1  0      0  36936  32980 360436    0    0    42    40  195   315 20  6 75  0
1  0      0  23400  32988 360468    0    0    32     0  331   964 70  5 25  0
5  0      0   8032  33000 360468    0    0     0   784  447  1655 76  7 16  0
1  0      0  46620  32208 351924    0    0   252     0  378  1029 75 13 12  0
1  0      0  46808  32216 351932    0    0    12     0  312   193 52  1 47  0
2  0      0  38476  32216 351940    0    0     0     0  198  1245 50  9 41  0
0  0      0  52568  32216 351944    0    0     0     0  175   349  9  5 86  0
0  0      0  52532  32228 351944    0    0     0   852  211    88  0  0 99  0
0  0      0  52272  32228 352044    0    0    96     0  353  4635  8  3 89  0
0  0      0  52216  32236 352092    0    0    48     0  409   226  0  1 99  0
0  0      0  53236  32236 352096    0    0     4     0  384   304 13  2 85  0
0  0      0  53212  32236 352100    0    0     0     0  195    93  0  1 99  0
0  0      0  53264  32252 352100    0    0     0   340  256   182 10  1 88  0
0  0      0  53152  32260 352228    0    0   136     0  294   635 22  9 69  0
0  0      0  52744  32268 352532    0    0   312     0  448   309  1  0 98  0
0  0      0  52508  32268 352768    0    0   232     0  427   120  0  0 100  0
0  0      0  52956  32272 352876    0    0   112     0  336   121  0  1 99  0
0  0      0  52632  32284 352876    0    0     0   312  208   136  1  0 99  0
1  0      0  52372  32284 352876    0    0     0     0  192   225  9  2 89  0
0  0      0  52620  32284 352880    0    0     0     0  232   178  8  2 90  0
[root_AT_ns23345 procps-3.2.6]#


whistling.gif
Dan
Manifestement tu n'as pas de problème de wait, vu que la colonne reste à zéro.
Tu n'as pas non plus de problème de swap.
antouane
ok d'accord.
thanx pour cet outil que je ne connaissais pas.

en ce moment tout est vraiment tres rapide.
j ai desactivé un bout de script qui sollicite beaucoup la bdd pour voir ce que cela donne.
J espere que ca va rester comme ca, la période chaude sera cette apres-midi.

je remettrai ensuite le script qui tape dans mes jointures de 10k entrees
mais j ai bien peur que le probleme de ralentissement vienne simplement de la : grosse bdd et requetes trop gourmandes

tu penses que passer en mysql4 pourrait etre une solution ? (on doit pouvoir rajouter 512 de ram )
merci de ton aide pour cette petite review-serveur dans tous les cas. a_thumbsup_20.gif
Dan
CITATION(antouane @ mardi 9 janvier 2007, 12h19) *
otu penses que passer en mysql4 pourrait etre une solution ? (on doit pouvoir rajouter 512 de ram )
merci de ton aide pour cette petite review-serveur dans tous les cas. a_thumbsup_20.gif

Pas UNE solution... LA solution ! smile.gif Pour autant que tes index soient OK...
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.