CPU qui s'affole

13 réponses
AuteurMessage

mirage |
Modérateur

Photo de mirage

Inscrit le : 04/05/2005

# Le 18/04/2009 à 10:52

Salut,

J'ai de nouveau un petit soucis sur une machine (Kimsufi 2XL) dont le CPU s'affole sans raison particulière (pas de hausse de trafic ni quoi que ce soit d'autre), cf graph MuninOuvrir dans une nouvelle fenetre .

D'après un top, ça viendrait d'Apache avec des process pouvant monter à 100% du CPU :

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                    
18937 www-data 20 0 174m 38m 24m R 100 1.9 0:16.18 apache2
18927 www-data 20 0 174m 37m 24m R 7 1.9 0:00.84 apache2
18933 www-data 20 0 168m 36m 29m S 5 1.8 0:09.98 apache2
18935 www-data 20 0 167m 21m 14m S 1 1.1 0:00.24 apache2
18949 www-data 20 0 168m 40m 33m S 1 2.0 0:01.40 apache2
18961 www-data 20 0 167m 27m 20m S 1 1.4 0:09.58 apache2


Ma configuration Apache est la suivante (prefork avec les modules alias, auth_basic, authn_file, authz_default, authz_groupfile, authz_host, authz_user, dav, dav_svn, deflate, dir, env, headers, mime, mod_python, negotiation, php5, rewrite, setenvif, ssl, vhost_alias) :
StartServers 30
MinSpareServers 20
MaxSpareServers 40
MaxClients 200
MaxRequestsPerChild 5000
Timeout 60
KeepAlive On
MaxKeepAliveRequests 100

Un petit "ps aux" au passage :
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root 1 0.0 0.0 6124 688 ? Ss Apr16 0:01 init [2]
root 2 0.0 0.0 0 0 ? S< Apr16 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S< Apr16 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S< Apr16 0:17 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< Apr16 0:00 [migration/1]
root 6 0.0 0.0 0 0 ? S< Apr16 0:18 [ksoftirqd/1]
root 7 0.0 0.0 0 0 ? S< Apr16 0:06 [events/0]
root 8 0.0 0.0 0 0 ? S< Apr16 0:07 [events/1]
root 9 0.0 0.0 0 0 ? S< Apr16 0:00 [khelper]
root 116 0.0 0.0 0 0 ? S< Apr16 0:00 [kintegrityd/0]
root 117 0.0 0.0 0 0 ? S< Apr16 0:00 [kintegrityd/1]
root 118 0.0 0.0 0 0 ? S< Apr16 0:02 [kblockd/0]
root 119 0.0 0.0 0 0 ? S< Apr16 0:02 [kblockd/1]
root 120 0.0 0.0 0 0 ? S< Apr16 0:00 [kacpid]
root 121 0.0 0.0 0 0 ? S< Apr16 0:00 [kacpi_notify]
root 203 0.0 0.0 0 0 ? S< Apr16 0:00 [ata/0]
root 204 0.0 0.0 0 0 ? S< Apr16 0:00 [ata/1]
root 205 0.0 0.0 0 0 ? S< Apr16 0:00 [ata_aux]
root 206 0.0 0.0 0 0 ? S< Apr16 0:00 [ksuspend_usbd]
root 211 0.0 0.0 0 0 ? S< Apr16 0:00 [khubd]
root 214 0.0 0.0 0 0 ? S< Apr16 0:00 [kseriod]
root 269 0.0 0.0 0 0 ? S< Apr16 1:44 [kswapd0]
root 270 0.0 0.0 0 0 ? S< Apr16 0:00 [aio/0]
root 271 0.0 0.0 0 0 ? S< Apr16 0:00 [aio/1]
root 274 0.0 0.0 0 0 ? S< Apr16 0:00 [nfsiod]
root 275 0.0 0.0 0 0 ? S< Apr16 0:00 [cifsoplockd]
root 276 0.0 0.0 0 0 ? S< Apr16 0:00 [cifsdnotifyd]
root 278 0.0 0.0 0 0 ? S< Apr16 0:00 [xfs_mru_cache]
root 279 0.0 0.0 0 0 ? S< Apr16 0:00 [xfslogd/0]
root 280 0.0 0.0 0 0 ? S< Apr16 0:00 [xfslogd/1]
root 281 0.0 0.0 0 0 ? S< Apr16 0:00 [xfsdatad/0]
root 282 0.0 0.0 0 0 ? S< Apr16 0:00 [xfsdatad/1]
root 283 0.0 0.0 0 0 ? S< Apr16 1:00 [gfs2_scand]
root 284 0.0 0.0 0 0 ? S< Apr16 0:00 [glock_workqueue]
root 285 0.0 0.0 0 0 ? S< Apr16 0:00 [glock_workqueue]
root 988 0.0 0.0 0 0 ? S< Apr16 0:00 [iscsi_eh]
root 1005 0.0 0.0 0 0 ? S< Apr16 0:00 [scsi_eh_0]
root 1007 0.0 0.0 0 0 ? S< Apr16 0:00 [scsi_eh_1]
root 1034 0.0 0.0 0 0 ? S< Apr16 0:00 [mtdblockd]
root 1069 0.0 0.0 0 0 ? S< Apr16 0:00 [scsi_eh_2]
root 1070 0.0 0.0 0 0 ? S< Apr16 0:27 [usb-storage]
root 1083 0.0 0.0 0 0 ? S< Apr16 0:00 [kpsmoused]
root 1102 0.0 0.0 0 0 ? S< Apr16 0:00 [kstriped]
root 1104 0.0 0.0 0 0 ? S< Apr16 0:00 [kdelayd/0]
root 1105 0.0 0.0 0 0 ? S< Apr16 0:00 [kdelayd/1]
root 1106 0.0 0.0 0 0 ? S< Apr16 0:00 [kmpathd/0]
root 1107 0.0 0.0 0 0 ? S< Apr16 0:00 [kmpathd/1]
root 1108 0.0 0.0 0 0 ? S< Apr16 0:00 [kmpath_handlerd]
root 1109 0.0 0.0 0 0 ? S< Apr16 0:00 [ksnapd]
root 1110 0.0 0.0 0 0 ? S< Apr16 0:00 [kondemand/0]
root 1111 0.0 0.0 0 0 ? S< Apr16 0:00 [kondemand/1]
root 1118 0.0 0.0 0 0 ? S< Apr16 0:00 [rpciod/0]
root 1119 0.0 0.0 0 0 ? S< Apr16 0:00 [rpciod/1]
root 1127 0.0 0.0 0 0 ? S< Apr16 0:01 [kjournald]
root 2409 0.0 0.0 0 0 ? R< Apr16 0:01 [kjournald]
root 2410 0.0 0.0 0 0 ? S< Apr16 0:01 [kjournald]
root 2411 0.0 0.0 0 0 ? S< Apr16 0:00 [kjournald]
root 2412 0.0 0.0 0 0 ? S< Apr16 0:59 [kjournald]
daemon 2779 0.0 0.0 4824 400 ? Ss Apr16 0:00 /sbin/portmap
root 3024 0.0 0.0 3728 604 ? Ss Apr16 0:03 /sbin/syslogd
root 3030 0.0 0.0 2656 388 ? Ss Apr16 0:01 /sbin/klogd -x
bind 3070 0.0 0.2 56636 5368 ? Ssl Apr16 0:27 /usr/sbin/named -u bind
root 3134 0.0 0.0 10116 1516 ? S Apr16 0:00 /bin/sh /usr/bin/mysqld_safe
mysql 3171 1.1 9.3 364736 191020 ? Sl Apr16 32:02 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysq
root 3172 0.0 0.0 2640 532 ? S Apr16 0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
root 3290 0.0 0.1 19620 2044 ? Ss Apr16 0:03 /usr/lib/postfix/master
postfix 3297 0.0 0.1 21064 2520 ? S Apr16 0:02 qmgr -l -t fifo -u
root 3299 0.0 0.0 6156 784 ? Ss Apr16 0:00 /usr/bin/rsync --no-detach --daemon --config /etc/rsync
root 3310 0.0 0.0 2948 716 ? S Apr16 0:00 /usr/sbin/smartd --pidfile /var/run/smartd.pid
root 3333 0.0 0.0 25844 1232 ? Ss Apr16 0:00 /usr/sbin/sshd
root 3337 0.0 0.0 15132 1280 ? Ss Apr16 0:00 /usr/sbin/vsftpd
root 3371 0.0 0.0 11768 1084 ? Ss Apr16 0:00 /usr/sbin/famd -T 0
ntp 3387 0.0 0.0 14080 1460 ? Ss Apr16 0:04 /usr/sbin/ntpd -p /var/run/ntpd.pid -u 108:110 -g
root 3397 0.0 0.0 11496 940 ? Ss Apr16 0:00 /usr/sbin/cron
root 3531 0.0 0.3 26740 6884 ? Ss Apr16 0:09 /usr/sbin/munin-node
root 3716 0.1 0.2 60796 5144 ? Sl Apr16 2:44 python2.4 /usr/bin/fail2ban-server -b -s /tmp/fail2ban.
root 3810 0.0 0.0 26076 1540 ? Sl Apr16 0:07 /usr/sbin/monit -d 180 -c /etc/monit/monitrc -s /var/li
root 3844 0.0 0.0 2656 492 tty1 Ss+ Apr16 0:00 /sbin/getty 38400 tty1
root 3845 0.0 0.0 2656 492 tty2 Ss+ Apr16 0:00 /sbin/getty 38400 tty2
root 3846 0.0 0.0 2656 492 tty3 Ss+ Apr16 0:00 /sbin/getty 38400 tty3
root 3847 0.0 0.0 2656 492 tty4 Ss+ Apr16 0:00 /sbin/getty 38400 tty4
root 3848 0.0 0.0 2656 492 tty5 Ss+ Apr16 0:00 /sbin/getty 38400 tty5
root 3849 0.0 0.0 2656 492 tty6 Ss+ Apr16 0:00 /sbin/getty 38400 tty6
postfix 3861 0.0 0.1 21732 2392 ? S Apr16 0:00 tlsmgr -l -t unix -u -c
postfix 9520 0.0 0.1 20656 2052 ? S 09:20 0:00 pickup -l -t fifo -u -c
root 10373 0.0 0.0 0 0 ? S Apr17 0:08 [pdflush]
root 13556 0.0 0.1 36792 2680 ? Ss 09:53 0:00 sshd: agaw [priv]
agaw 13592 0.0 0.0 36932 1772 ? R 09:54 0:00 sshd: agaw@pts/0
agaw 13595 0.0 0.1 17856 2588 pts/0 Ss 09:54 0:00 -zsh
root 13603 0.0 0.0 19176 1136 pts/0 S 09:54 0:00 su
root 13604 0.0 0.2 21016 4156 pts/0 S 09:54 0:00 zsh
root 16199 0.0 0.0 0 0 ? S< Apr16 0:35 [kjournald]
root 20873 0.0 0.6 169528 13744 ? Ss 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20878 10.4 1.5 171156 30636 ? S 10:46 0:18 /usr/sbin/apache2 -k start
www-data 20879 0.1 1.0 171464 22260 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20881 0.7 1.5 177736 31224 ? R 10:46 0:01 /usr/sbin/apache2 -k start
www-data 20882 0.1 1.2 171768 24648 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20883 0.0 1.0 171224 20852 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20884 0.1 0.9 171428 20212 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20885 0.4 1.2 171452 25516 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20886 0.0 1.0 171464 20628 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20887 0.1 0.8 171292 18072 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20888 0.0 0.6 171124 13152 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20889 4.6 1.0 171536 22020 ? S 10:46 0:08 /usr/sbin/apache2 -k start
www-data 20890 0.1 1.0 171456 22196 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20891 0.2 1.1 171452 22416 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20892 0.4 1.1 171428 23048 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20893 0.1 1.1 171780 22616 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20894 0.1 1.0 171164 20580 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20895 0.2 1.3 172044 27012 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20896 5.3 1.2 171284 24792 ? S 10:46 0:09 /usr/sbin/apache2 -k start
www-data 20897 0.0 0.6 171408 13224 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20898 4.0 1.7 178800 35640 ? D 10:46 0:07 /usr/sbin/apache2 -k start
www-data 20899 5.7 1.4 177412 29972 ? R 10:46 0:10 /usr/sbin/apache2 -k start
www-data 20900 5.0 1.1 171432 23672 ? S 10:46 0:08 /usr/sbin/apache2 -k start
www-data 20901 0.1 0.9 171408 20292 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20902 0.2 1.2 171468 24784 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20903 4.8 1.2 171336 25168 ? S 10:46 0:08 /usr/sbin/apache2 -k start
www-data 20904 4.2 1.4 178192 29364 ? D 10:46 0:07 /usr/sbin/apache2 -k start
www-data 20905 0.0 0.6 171376 12452 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20906 0.1 1.1 171248 23760 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20907 0.0 0.9 171340 19424 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20908 0.0 0.6 170228 12344 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20910 0.1 1.0 171496 21820 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20911 0.4 1.1 171212 23720 ? S 10:46 0:00 /usr/sbin/apache2 -k start
www-data 20912 0.5 1.1 171168 24168 ? S 10:46 0:00 /usr/sbin/apache2 -k start
postfix 20979 0.0 0.1 23056 3092 ? S 10:48 0:00 smtpd -n smtp -t inet -u -c
postfix 20980 0.0 0.0 20652 1992 ? S 10:48 0:00 proxymap -t unix -u
postfix 20981 0.0 0.0 20664 2020 ? S 10:48 0:00 trivial-rewrite -n rewrite -t unix -u -c
postfix 20982 0.0 0.1 20728 2120 ? S 10:48 0:00 cleanup -z -t unix -u -c
postfix 20983 0.0 0.1 22844 2320 ? S 10:48 0:00 smtp -t unix -u -c
www-data 21026 0.0 0.3 169664 7608 ? S 10:49 0:00 /usr/sbin/apache2 -k start
root 21027 0.0 0.0 9652 1044 pts/0 R+ 10:49 0:00 ps aux
root 21288 0.0 0.0 10596 676 ? S<s Apr17 0:09 udevd --daemon
root 23234 0.0 0.0 0 0 ? S Apr17 0:08 [pdflush]


J'avoue que je ne sais plus trop où chercher tellement je ne vois pas la raison de cet affolement. Cela pourrait venir de la configuration d'Apache (on en avait déjà parlé dans un autre topic) mais je n'en suis pas certain.

Merci par avance pour vos conseils

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 18/04/2009 à 11:22

Je ne vois aucun process "php-cgi", donc je suppose que tu utilises un PHP en version module... il y a donc de fortes chances pour que ce soit lui le pic à 100% de CPU. Maintenant pour trouver le script fautif, bon courage. ;)

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

mirage | Vincent
Modérateur

Photo de mirage

Inscrit le : 04/05/2005

# Le 18/04/2009 à 11:31

Oui php en module Apache (comme précisé dans mon premier message). Y a aucun moyen de ressortir des infos pour trouver l'emmerdeur ?

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 18/04/2009 à 14:10

D'expériences passées, le truc le plus gourmand en CPU et qui passe inaperçu c'est l'upload et le retraitement d'images dans la cadre d'une galerie (j'imagine que tu en as sur Aeroweb ou autre)

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

mirage | Vincent
Modérateur

Photo de mirage

Inscrit le : 04/05/2005

# Le 18/04/2009 à 14:29

Hum, je passe par Imagick pour tout ce qui est retraitement d'images et de l'upload il y en a assez peu à vrai dire (sur AeroWeb, il n'y a que les avatars que les membres peuvent uploader et sur Pictaero, ce sont de grosses images mais il n'y a pas d'envoi spectaculaire depuis hier soir).

Je pense déjà que ça vient d'AeroWeb donc quelque part de symfony (j'ai fait une mise à jour dans la soirée mais pas à l'heure où le pic a commencé à se former). Est-ce que réduire le MaxRequestsPerChild permettrait de temporairement réduire la charge (pour forcer Apache à recréer des fils, ce qui doit d'ailleurs être consommateur) ?

Ah c'est chiant ce genre de trucs, ça arrive à chaque fois que on a pas le temps de s'en occuper...

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 18/04/2009 à 15:44

Je veux pas non plus troller mais tu utilises un framework, n'est-ce pas là le risque de ne pas en maitriser le coeur ?

(Message édité le 18-04-2009 à 15h50 par Julgates)

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 18/04/2009 à 16:29

Je n'avais pas regardé ton graph Munin, mais s'il est exact tes principaux pics CPU sont de type IOWAIT et SYSTEM.
Coté système ça peut être beaucoup de choses, mais pour ce qui est des iowait c'est généralement qu'il y a trop d'accès disque. Essaye déjà d'en déterminer la source (via iotopOuvrir dans une nouvelle fenetre par exemple, si tu as un kernel "qui va bien", ou iostat si tu as un partitionnement plus poussé que le truc de base).

D'ailleurs SPIP est très très gourmand en accès disques, possible que ce soit aussi le cas de Symfony.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

mirage | Vincent
Modérateur

Photo de mirage

Inscrit le : 04/05/2005

# Le 18/04/2009 à 16:30

Julgates a dit :
Je veux pas non plus troller mais tu utilises un framework, n'est-ce pas là le risque de ne pas en maitriser le coeur ?

Si, forcément que je n'ai pas de maîtrise sur le cœur sauf si je me détache de la branche stable et que je modifie ce que je veux. symfony a d'ailleurs l'avantage d'être assez extensible à ce niveau.

Cela dit, je ne suis pas certain que cela vienne de là (quelques heures s'étant écoulées, je suis dubitatif).

mirage | Vincent
Modérateur

Photo de mirage

Inscrit le : 04/05/2005

# Le 18/04/2009 à 16:35

Bool a dit :
Je n'avais pas regardé ton graph Munin, mais s'il est exact tes principaux pics CPU sont de type IOWAIT et SYSTEM.
Coté système ça peut être beaucoup de choses, mais pour ce qui est des iowait c'est généralement qu'il y a trop d'accès disque. Essaye déjà d'en déterminer la source (via iotopOuvrir dans une nouvelle fenetre par exemple, si tu as un kernel "qui va bien", ou iostat si tu as un partitionnement plus poussé que le truc de base).

D'ailleurs SPIP est très très gourmand en accès disques, possible que ce soit aussi le cas de Symfony.

J'essaie iotop.

symfony est gourmand est accès disque si le cache est activé (vu que c'est un cache sur le disque). Il est possible d'utiliser memcached ou sqlite pour stocker les fichiers, ça peut réduire la sollicitation du disque.

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 18/04/2009 à 16:42

Pour moi un cache disque est plus efficace qu'un cache memcached, s'il n'utilise pas de verrou. Memcached c'est surtout bien pour avoir un cache commun à plusieurs serveurs, mais c'est plus lent que la plupart des solutions "locales".

Quant à SQLite, je ne l'ai jamais utilisé en guise de cache, mais je trouve les écritures très pénalisantes (gros verrou).

Maintenant il faut aussi utiliser un système de fichier approprié (j'aime bien l'option writeback d'ext4 par exemple). Et préciser "noatime" en option de montage est quasi indispensable à mon avis, peu importe le fs.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

mirage | Vincent
Modérateur

Photo de mirage

Inscrit le : 04/05/2005

# Le 18/04/2009 à 17:15

Le disque est formaté en ext3 et "noatime" n'est pas précisé dans le fstab. Il y a un risque à passer en noatime ?

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 18/04/2009 à 17:27

Par défaut l'heure du dernier accès à un fichier est systématiquement tracée, si bien que toutes les lectures disque se traduisent systématiquement par des écritures physique, même si le contenu était en cache... alors que très peu de softs se servent de cette info. En exagérant un poil : ça nuit au perfs, diminue la durée de vie du disque, et augmente la consommation électrique. Du coup je désactive systématiquement ça, partout, et je n'ai encore pas trouvé de soft "serveur" qui s'en servait.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

mirage | Vincent
Modérateur

Photo de mirage

Inscrit le : 04/05/2005

# Le 18/04/2009 à 18:47

Ok, je vais activer.

Sinon, pour mon bousin, je viens de trouver ce qui ne va pas. J'ai un dossier de cache qui fait 990 mo (!!!) avec des dizaines de milliers de fichiers dedans (quelqu'un ici avait eu le problème d'un Apache ralentit quand il y avait trop de fichiers dans un dossier). Je n'ai pas encore trouvé la cause de ce problème mais je sais déjà d'où ça vient !

mirage | Vincent
Modérateur

Photo de mirage

Inscrit le : 04/05/2005

# Le 19/04/2009 à 10:55

Pour ceux que ça intéresse, ça vient d'une update récenteOuvrir dans une nouvelle fenetre dans le système de routing de symfony (proposée par un mec de Dailymotion). J'ai étendu le bout de code qui stocke en cache le routing et cela semble bien fonctionner (sans impact sur les performances, le temps de chargement est même grandement amélioré).

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 24/11/2024 5:36:47 | Généré en 14.72ms | Contacts | Mentions légales |