Aller au contenu

Optimisation des paramètres de Mysql & Apache


NiCoS

Sujets conseillés

Hello,

Je sors d'une phase où j'ai eu un load average de 40 sur mon petit serveur Duron 1600 / 256 Mo RAM - et cela a l'air reparti pour un tour...

Lors de cette phase, la swap était monté à plus de 300 Mo mais le CPU était peu utilisé (étrangement)

sd716:/var/log/mysql# top
top - 13:26:15 up 13 days,  5:40,  1 user,  load average: 1.42, 1.04, 1.35
Tasks: 106 total,   2 running, 102 sleeping,   0 stopped,   2 zombie
Cpu(s): 17.9% us, 32.9% sy,  0.0% ni, 45.8% id,  3.0% wa,  0.0% hi,  0.3% si
Mem:    236684k total,   225756k used,    10928k free,     2572k buffers
Swap:   514040k total,    76020k used,   438020k free,   119136k cached

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
12121 mysql     16   0  122m  33m 4288 S 43.9 14.4   2:12.27 mysqld
14944 www-data  17   0     0    0    0 Z  1.7  0.0   0:00.54 apache2 <defunct>
15050 www-data  17   0     0    0    0 Z  1.3  0.0   0:00.28 apache2 <defunct>
15089 www-data  16   0 60600  14m 9220 S  1.0  6.2   0:00.43 apache2
15075 root      16   0  2200 1124  848 R  0.3  0.5   0:00.05 top
   1 root      16   0  1880  372  344 S  0.0  0.2   0:02.03 init

Dans apache2.conf, j'ai :

#Timeout 300
Timeout 180

# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.

KeepAlive On

# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.

MaxKeepAliveRequests 100

# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.

# KeepAliveTimeout 15
KeepAliveTimeout 5

<IfModule prefork.c>

StartServers         15
MinSpareServers      10
MaxSpareServers     15
MaxClients          80
MaxRequestsPerChild  5

</IfModule>

et au niveau de MySQL, je suis en version 4.1 avec les options suivantes ajoutées à la conf par défaut de debian que j'avais trouvé à droite et à gauche:

# QQS optimisations :
set-variable = connect_timeout=20
set-variable = max_connections=200
set-variable = long_query_time=10
set-variable = thread_cache_size=20
set-variable = table_cache=128
set-variable = join_buffer_size=512K
set-variable = myisam_sort_buffer_size=32M
set-variable = record_buffer=256K
set-variable = read_rnd_buffer_size=256K

# Here you can see queries with especially long duration
log-slow-queries        = /var/log/mysql/mysql-slow.log

Des idées d'amélioration ???

Car la surcharge ne vient pas du trafic en lui même, mrtg annonce un trafic tout à fait normal.

Merci d'avance,

Nicolas

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

A priori oui :

sd716:~# hdparm /dev/hda

/dev/hda:
multcount    = 16 (on)
IO_support   =  1 (32-bit)
unmaskirq    =  1 (on)
using_dma    =  1 (on)
keepsettings =  0 (off)
readonly     =  0 (off)
readahead    = 256 (on)
geometry     = 65535/16/63, sectors = 80293248, start = 0

sd716:~# hdparm -tT /dev/hda

/dev/hda:
Timing cached reads:   968 MB in  2.00 seconds = 483.00 MB/sec
Timing buffered disk reads:  114 MB in  3.01 seconds =  37.90 MB/sec

et

sd716:~# hdparm -i /dev/hda

/dev/hda:

Model=Maxtor 6E040L0, FwRev=NAR61EA0, SerialNo=E1RHE5HE
Config={ Fixed }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=57
BuffType=DualPortCache, BuffSize=2048kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=80293248
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes:  pio0 pio1 pio2 pio3 pio4
DMA modes:  mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
AdvancedPM=yes: disabled (255) WriteCache=enabled
Drive conforms to: (null):  ATA/ATAPI-1 ATA/ATAPI-2 ATA/ATAPI-3 ATA/ATAPI-4 ATA/ATAPI-5 ATA/ATAPI-6 ATA/ATAPI-7

* signifies the current active mode

Lien vers le commentaire
Partager sur d’autres sites

A l'examen de ta configuration Apache, je vois que le MaxRequesPerChild est plutôt bas...

Sur le serveur du Hub j'ai mis 50, ce qui permet d'éviter de trop re-lancer de process httpd. 5 est vraiment faible, tu gagnerais à l'augmenter :)

Dan

Lien vers le commentaire
Partager sur d’autres sites

arf c'est reparti :(

top - 18:41:16 up 13 days, 10:55,  1 user,  load average: 45.93, 43.57, 31.97
Tasks: 161 total,   1 running, 160 sleeping,   0 stopped,   0 zombie
Cpu(s):  8.8% us,  1.6% sy,  3.3% ni, 77.2% id,  8.5% wa,  0.2% hi,  0.3% si
Mem:    236684k total,   233104k used,     3580k free,      820k buffers
Swap:   514040k total,   271828k used,   242212k free,    27308k cached

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  71 root      10  -5     0    0    0 S  0.3  0.0   2:15.10 kblockd/0
 163 root      15   0     0    0    0 D  0.3  0.0   2:22.42 kswapd0
25390 www-data  17   0 60956  10m 7032 D  0.3  4.4   0:01.21 apache2
25674 www-data  17   0 81484  11m 9.8m D  0.3  4.9   0:00.89 apache2
   1 root      16   0  1880  360  340 S  0.0  0.2   0:02.08 init
   2 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
   3 root      34  19     0    0    0 S  0.0  0.0   0:00.26 ksoftirqd/0
   4 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 events/0
   5 root      10  -5     0    0    0 S  0.0  0.0   0:00.01 khelper
   6 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 kthread
   8 root      20  -5     0    0    0 S  0.0  0.0   0:00.00 kacpid
 164 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 aio/0
 165 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 xfslogd/0
 166 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 xfsdatad/0
 167 root      15   0     0    0    0 S  0.0  0.0   0:07.94 xfsbufd
 754 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 kseriod
 843 root      18  -5     0    0    0 S  0.0  0.0   0:00.00 ata/0
 852 root      18  -5     0    0    0 S  0.0  0.0   0:00.00 exec-osm/0
 860 root      15   0     0    0    0 D  0.0  0.0   0:05.29 kjournald
1034 root      15   0     0    0    0 S  0.0  0.0   0:00.00 kjournald
1035 root      15   0     0    0    0 D  0.0  0.0   1:23.48 kjournald
1036 root      15   0     0    0    0 D  0.0  0.0   0:10.04 kjournald
1467 daemon    16   0  1704  208  208 S  0.0  0.1   0:00.00 portmap
1616 root      17   0  1644  440  360 D  0.0  0.2   0:37.74 syslogd
1622 root      16   0  2980  380  328 S  0.0  0.2   0:03.41 klogd
1636 bind      18   0 31312 1304  876 S  0.0  0.6   1:01.65 named
1660 root      17   0  1764  280  280 S  0.0  0.1   0:00.00 courierlogger
1661 root      17   0  1872  288  276 S  0.0  0.1   0:00.04 authdaemond.pla
1663 root      17   0  2084  396  360 S  0.0  0.2   0:00.44 authdaemond.pla
1664 root      16   0  2084  376  348 S  0.0  0.2   0:00.48 authdaemond.pla
1665 root      17   0  2084  368  344 S  0.0  0.2   0:00.57 authdaemond.pla
1666 root      17   0  2084  396  360 S  0.0  0.2   0:00.39 authdaemond.pla
1667 root      16   0  2084  388  360 S  0.0  0.2   0:00.37 authdaemond.pla
1672 root      15   0  1868  280  280 S  0.0  0.1   0:00.00 couriertcpd
1675 root      15   0  1764  284  284 S  0.0  0.1   0:00.00 courierlogger
1680 root      16   0  1864  308  300 S  0.0  0.1   0:01.15 couriertcpd
1683 root      16   0  1764  296  292 S  0.0  0.1   0:01.41 courierlogger
1688 root      20   0  1588  256  256 S  0.0  0.1   0:00.00 inetd
1946 root      17   0  1868  332  332 S  0.0  0.1   0:00.82 smartd
1952 root      16   0  4608  380  348 S  0.0  0.2   0:08.44 sshd
1995 root      16   0  3000  404  404 S  0.0  0.2   0:00.00 famd

et un autre :

top - 18:42:31 up 13 days, 10:56,  1 user,  load average: 38.48, 42.07, 32.36
Tasks: 161 total,   1 running, 160 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.7% us,  0.7% sy,  0.0% ni,  0.0% id, 95.7% wa,  1.0% hi,  0.0% si
Mem:    236684k total,   233268k used,     3416k free,     3304k buffers
Swap:   514040k total,   275656k used,   238384k free,    30684k cached

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
12121 mysql     17   0  141m  18m 2236 D  0.7  8.0   7:29.92 mysqld
  71 root      10  -5     0    0    0 S  0.3  0.0   2:15.15 kblockd/0
25260 www-data  17   0 61256  10m 7120 S  0.3  4.3   0:01.96 apache2
25427 www-data  17   0 60464 8488 5976 D  0.3  3.6   0:01.10 apache2
25431 www-data  16   0 60540 9496 6936 D  0.3  4.0   0:00.74 apache2
25443 www-data  17   0 61184   9m 7020 D  0.3  4.3   0:01.76 apache2
25491 www-data  17   0 60824 9056 6632 S  0.3  3.8   0:01.23 apache2
25496 www-data  15   0 72064 9660 7172 D  0.3  4.1   0:02.84 apache2
25572 www-data  16   0 61216  10m 8028 D  0.3  4.6   0:00.83 apache2
25634 www-data  17   0 72088  10m 6168 D  0.3  4.4   0:01.72 apache2
25642 www-data  16   0 62416 9784 6348 D  0.3  4.1   0:01.41 apache2
25652 www-data  17   0 60484 9040 6788 D  0.3  3.8   0:02.47 apache2
25661 www-data  16   0 60472 9804 6800 S  0.3  4.1   0:01.84 apache2

Lien vers le commentaire
Partager sur d’autres sites

Il faut revoir tous tes paramètres à la baisse... dont le nombre de "spare servers"

J'avais mal lu la RAM dispo... 230Mb c'est peu, j'avais lu 2.3GB

Et tu as plus de swap que de RAM disponible.. pas top !

Lien vers le commentaire
Partager sur d’autres sites

Vais tenter avec ça, cela te parait-il cohérent ?

StartServers         5
MinSpareServers      5
MaxSpareServers     10
MaxClients          20
# http://www.webmaster-hub.com/index.php?showtopic=20278
MaxRequestsPerChild  20

et

#Timeout 300
Timeout 60

# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.

KeepAlive On

# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.

MaxKeepAliveRequests 50

# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.

KeepAliveTimeout 15

pour la ram, vais voir pour en rajouter :)

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

Que mettrais tu ?

As tu une règle permettant de définir l'ensemble de ces valeurs de façon cohérente, j'avoue que ca m'échappe un peu...

Lien vers le commentaire
Partager sur d’autres sites

Attention au post bumping, il est interdit sur le Hub ! :(

A part augmenter la RAM, ce qui permettrait au serveur de moins swapper et de ce fait chargerait moins les disques, je ne vois pas ce que tu pourrais optimiser.

Le fait de passer à 512MB voire 1GB de RAM résoudrait tous tes problèmes de charge à mon avis.

Baisser trop les valeurs d'Apache risquerait de rendre le serveur inaccessible, parce qu'il ne permettrait pas de requêtes supplémentaires si le MaxClients est atteint, tant qu'un process ne se libère pas.

Dan

Lien vers le commentaire
Partager sur d’autres sites

Ok merci, je suis passé à MaxClients à 30 et idem pour MaxRequestPerChild - on va voir si c'est mieux ou pire demain.

Pour la Ram, je fais la collecte des fonds ;)

Merci bien en tous cas pour tes réponses :)

Lien vers le commentaire
Partager sur d’autres sites

Bon on a trouvé, cela venait de bloglines et des raffraichissement de flux rss.

On a déporté les flux sur rsscache.com et le serveur s'en trouve nettement allégé :)

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