web-dev-qa-db-fra.com

serveur apache a atteint le paramètre MaxClients, envisagez de relever le paramètre MaxClients

Je suis en cours d'exécution centos 5.5 avec 768 Mo de RAM. Je continue à obtenir server reached MaxClients setting, consider raising the MaxClients setting dans les journaux aussi Apache fonctionne très lentement. quand je regarde les graphiques de cactus, il montre que le serveur n'utilise même pas toutes les ressources .. voici la configuration actuelle

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers    10
ServerLimit        1024
MaxClients         768
MaxRequestsPerChild  4000
</IfModule>

<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75 
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>



free -m
             total       used       free     shared    buffers     cached
Mem:           768        352        415          0          0         37
-/+ buffers/cache:        315        452
Swap:            0          0          0



top - 11:03:54 up 41 days, 11:53,  1 user,  load average: 0.05, 0.03, 0.00
Tasks:  35 total,   1 running,  34 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.3%st
Mem:    786432k total,   389744k used,   396688k free,        0k buffers
Swap:        0k total,        0k used,        0k free,    38284k cached

J'ai essayé ce qui suit mais le serveur répond très lentement

<IfModule worker.c>
#StartServers         2
#MaxClients         150
#MinSpareThreads     25
#MaxSpareThreads     75
#ThreadsPerChild     25
#MaxRequestsPerChild  0

StartServers    20
MaxClients      1024
ServerLimit     1024
MinSpareThreads 128
MaxSpareThreads 768
ThreadsPerChild 64
MaxRequestsPerChild 0
</IfModule>

free -m
             total       used       free     shared    buffers     cached
Mem:           768        324        443          0          0         37
-/+ buffers/cache:        286        481
Swap:            0          0          0

enter image description here

@regilero

J'ai mis à jour pour 

<IfModule prefork.c>
  StartServers       12
  MinSpareServers    12
  MaxSpareServers    12
  MaxClients         50
  MaxRequestsPerChild  300
</IfModule>

en utilisant le haut je vois

Tasks:  36 total,   1 running,  35 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    786432k total,   613180k used,   173252k free,        0k buffers
Swap:        0k total,        0k used,        0k free,    76488k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                         
    1 root      20   0 10364   92   60 S  0.0  0.0   1:09.53 init                                                                                                                                                                            
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd/808                                                                                                                                                                    
    3 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khelper/808                                                                                                                                                                     
  124 root      16  -4 12620    8    4 S  0.0  0.0   0:00.00 udevd                                                                                                                                                                           
  533 root      20   0 95504 5692  228 S  0.0  0.7   4:02.94 memcached                                                                                                                                                                       
  546 root      20   0  5924  332  276 S  0.0  0.0   6:54.51 syslogd                                                                                                                                                                         
  557 root      20   0  101m 1456  868 S  0.0  0.2  13:18.64 snmpd                                                                                                                                                                           
  570 root      20   0 62640  316  208 S  0.0  0.0   2:39.56 sshd                                                                                                                                                                            
  579 root      20   0 21656   24   20 S  0.0  0.0   0:00.00 xinetd                                                                                                                                                                          
  589 root      20   0 12072   12    8 S  0.0  0.0   0:00.05 mysqld_safe                                                                                                                                                                     
  940 mysql     20   0  559m 164m 3832 S  0.3 21.5 209:33.88 mysqld                                                                                                                                                                          
 1015 root      20   0 20880  200  132 S  0.0  0.0   0:10.48 crond                                                                                                                                                                           
 1023 root      20   0 46748    4    0 S  0.0  0.0   0:00.00 saslauthd                                                                                                                                                                       
 1024 root      20   0 46748    4    0 S  0.0  0.0   0:00.00 saslauthd                                                                                                                                                                       
 3605 root      20   0 62832 2168  636 S  0.0  0.3   0:02.58 sendmail                                                                                                                                                                        
 3613 smmsp     20   0 57712 1648  504 S  0.0  0.2   0:00.01 sendmail                                                                                                                                                                        
17610 root      20   0 85932 3312 2600 S  0.0  0.4   0:00.02 sshd                                                                                                                                                                            
17612 mcmap     20   0 86072 1760 1012 S  0.0  0.2   0:00.17 sshd                                                                                                                                                                            
17613 mcmap     20   0 12076 1656 1292 S  0.0  0.2   0:00.01 bash                                                                                                                                                                            
17637 root      20   0 45052 1432 1120 S  0.0  0.2   0:00.00 su                                                                                                                                                                              
17638 root      20   0 12180 1800 1324 S  0.0  0.2   0:00.08 bash                                                                                                                                                                            
17740 root      20   0  246m 9264 4516 S  0.0  1.2   0:00.19 httpd                                                                                                                                                                           
18264 Apache    20   0  282m  43m 4940 S  0.0  5.7   0:00.56 httpd                                                                                                                                                                           
18514 Apache    20   0  279m  40m 4832 S  0.0  5.3   0:01.47 httpd                                                                                                                                                                           
18518 Apache    20   0  273m  36m 4396 S  0.0  4.7   0:00.45 httpd                                                                                                                                                                           
18528 Apache    20   0  251m  13m 3660 S  0.0  1.8   0:00.41 httpd                                                                                                                                                                           
18529 Apache    20   0  278m  40m 4340 S  0.0  5.3   0:00.99 httpd                                                                                                                                                                           
18530 Apache    20   0  278m  40m 4268 S  0.0  5.3   0:00.67 httpd                                                                                                                                                                           
18548 Apache    20   0  272m  33m 3516 S  0.0  4.4   0:00.28 httpd                                                                                                                                                                           
18552 Apache    20   0  280m  42m 3684 S  0.0  5.5   0:00.48 httpd                                                                                                                                                                           
18553 Apache    20   0  271m  33m 3768 S  0.0  4.3   0:00.45 httpd                                                                                                                                                                           
18555 Apache    20   0  274m  36m 3672 S  0.0  4.7   0:00.58 httpd                                                                                                                                                                           
18572 Apache    20   0  247m 9020 2856 S  0.0  1.1   0:00.01 httpd                                                                                                                                                                           
18578 Apache    20   0  280m  42m 3684 S  0.0  5.6   0:00.76 httpd                                                                                                                                                                           
18589 Apache    20   0  246m 5452  676 S  0.0  0.7   0:00.00 httpd                                                                                                                                                                           
18588 root      20   0 12624 1216  932 R  0.0  0.2   0:00.06


free -m
             total       used       free     shared    buffers     cached
Mem:           768        578        189          0          0         74
-/+ buffers/cache:        504        263
Swap:            0          0          0

enter image description here Vient d’ajouter une image actuelle du résultat des cactus au cours des 4 dernières heures les périodes de pointe sont le lundi mardi. J'attendrai donc jusqu'à la semaine prochaine pour voir d'autres résultats du changement de configuration. mais cela ressemble à une amélioration car auparavant, je n'avais qu'un maximum de 10 fils disponibles. En regardant cela, tu penses que je peux faire plus d’amélioration?

free -m
             total       used       free     shared    buffers     cached
Mem:           768        619        148          0          0         49
-/+ buffers/cache:        570        197
Swap:            0          0          0

NOUVEAU TEST

Sur un boîtier VPS Ram de 2 Go, je suis maintenant réglé sur prefork sur

StartServers      20
MinSpareServers   20
MaxSpareServers   20
ServerLimit  256
MaxClients   256
MaxRequestsPerChild  4000

aujourd'hui matin mon serveur memcache est mort de

Nov 20 09:28:40 vps22899094 kernel: Out of memory: Kill process 12517 (memcached) score 81 or sacrifice child
Nov 20 09:28:40 vps22899094 kernel: Killed process 12517, UID 497, (memcached) total-vm:565252kB, anon-rss:42940kB, file-rss:44kB

Quelles devraient être les valeurs optimales à définir dans Apache?

#/etc/sysconfig/memcached

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="1024"
OPTIONS="-l 127.0.0.1"

/etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

bind-address=127.0.0.1

#script
thread_concurrency=2
query_cache_size = 16M
query_cache_type=1
query_cache_limit=5M

# MyISAM #
#key-buffer-size                = 32M
#myisam-recover                 = FORCE,BACKUP

# SAFETY #
#max-allowed-packet             = 16M
#max-connect-errors             = 1000000

# CACHES AND LIMITS #
tmp-table-size                 = 32M
max-heap-table-size            = 32M
#query-cache-type               = 0
#query-cache-size               = 0
max-connections                = 50
thread-cache-size              = 16
#open-files-limit               = 65535
#table-definition-cache         = 1024
#table-open-cache               = 2048

# INNODB #
#innodb-flush-method            = O_DIRECT
#innodb-log-files-in-group      = 2
#innodb-log-file-size           = 5M
#innodb-flush-log-at-trx-commit = 1
#innodb-file-per-table          = 1
#innodb-buffer-pool-size        = 921M
# LOGGING #
log-error                      = /var/log/mysqld.log
log-queries-not-using-indexes  = 1
slow-query-log                 = 1
slow-query-log-file            = /var/log/mysqld-slow.log

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
26
shorif2000

Voici une approche qui pourrait résoudre votre problème et, dans le cas contraire, aiderait à la résolution des problèmes.

  1. Créez un deuxième serveur virtuel Apache identique au serveur actuel

  2. Envoie tout le trafic utilisateur "normal" au serveur virtuel d'origine

  3. Envoi de trafic spécial ou de longue durée vers le nouveau serveur virtuel

Le trafic spécial ou de longue durée peut être la génération de rapports, les opérations de maintenance ou tout autre élément que vous ne prévoyez pas terminer en << 1 seconde. Cela peut arriver en servant des API, pas seulement des pages Web.

Si l'utilisation de vos ressources est faible mais que vous dépassez toujours MaxClients, la réponse la plus probable est que vos nouvelles connexions arrivent plus rapidement qu'elles ne peuvent être desservies. Mettre toute opération lente sur un deuxième serveur virtuel aidera à prouver que tel est le cas. Utilisez les journaux d’accès Apache pour quantifier l’effet.

1
Chris Johnson

Avez-vous envisagé d’utiliser nginx (ou un autre serveur Web basé sur des événements) au lieu d’apache?

nginx doit autoriser un nombre plus élevé de connexions et consommer beaucoup moins de ressources (car il est basé sur des événements et ne crée pas de processus séparé par connexion). Quoi qu'il en soit, vous aurez besoin de certains processus effectuant un travail réel (comme des serveurs WSGI ou autres) et s’ils restent sur le même serveur que le serveur Web frontal, vous ne faites que déplacer le problème de performances à un endroit légèrement différent.

La dernière version d'Apache doit autoriser une solution similaire (la configurer de manière événementielle), mais ce n'est pas mon domaine d'expertise.

0
Jan Vlcinsky