phpbar.de logo

Mailinglisten-Archive

mySQL verbraucht zu viel CPU / sleep-Prozesse beenden nicht

mySQL verbraucht zu viel CPU / sleep-Prozesse beenden nicht

Guido Stepken mysql-de_(at)_lists.bttr.org
Fri, 25 Oct 2002 12:51:35 +0200


Ich habe mysql_pconnect (steht überall als Empfehlung) gegen 
mysql_connect und mysql_close ersetzt.
Damit waren einige Probleme weg.

Gruß, Guido Stepken

Am Freitag den, 25. Oktober 2002, um 12:04, schrieb universe:

> Hi,
>
> mySQL 3.23.49 auf Debian GNU/Linux 3.0 mit Kernel 2.4.19 auf einem Xeon
> 2 Ghz (Single) CPU mit 2 GB DDR-RAM. Folgendes Problem stellt sich:
>
> Die mySQL-Prozesse beanspruchen immer zwischen 100%-200% CPU,
> dementsprechend langsam wird das System und manche PHP-websites werden
> erst nach 5-30 Sekunden ausgeliefert.
>
> Ich habe versucht mich an die Ursache heranzutasten:
>
> - "mysqladmin processlist" lieferte immer "Too many connections." Also
> habe ich die max_connections testweise mal auf 500 gesetzt. Dann konnte
> man beobachten, dass mehr und mehr Prozesse aufgebaut werden, sich aber
> nicht wieder abbauen. Es handelte sich dabei immer um "Sleep"-Prozesse,
> die praktisch ewig aufgebaut blieben. Nach ein paar Minuten waren die
> 500 connections fast vollstaendig aufgebraucht. Die load average des
> Systems lag dabei jenseits von 20 und die websites konnten demnach nicht
> mehr abgerufen werden.
>
> - Testweise "wait_timeout" und "interactive_timeout" auf 60 Sekunden
> gesetzt (default ist 8 Stunden). Das hat Abhilfe geschafft - die
> "Sleep"-Prozesse wurden nach 60 Sekunden beendet und die max. Anzahl
> aller mySQL-Prozesse lagen bei ca. 50 (gleichzeitig, inkl. Sleep).
>
> - Momentan stehen die o.g. timeouts bei nur 10 Sekunden. So konnte man
> die load noch etwas senken. Momentan bewegt sich die load average
> zwischen 3 und 6, manchmal auch mehr. "top" sagt mir, dass es immer
> zwischen 2-10 mysqld-Prozesse (UNIX) gibt die jeweils irgendwas von 20%
> und 99.9% von der CPU abhaben wollen. In diesem Zusammenhang gibt es
> dann auch Apache-Prozesse die sich mit weniger (10%-30%) CPU zufrieden
> geben.
>
> mySQL wird durch PHP 4.1.2 (Apache 1.3.26) angesteuert. Ich habe
> "mysql.allow_persistent = Off" in der php.ini eingestellt, in der
> Hoffnung damit die Sleep-Prozesse gaenzlich loszuwerden bzw. die load zu
> senken.
>
> So wirklich weiss ich nach wie vor nicht wo das Problem ist. Der
> PHP-Code ist mit zend encoded, man kann also schlecht sehen was die
> PHP-scripts tatsaechlich machen.
>
> "mysqladmin status" liefert: Uptime: 848  Threads: 14  Questions: 9799
> Slow queries: 25  Opens: 71  Flush tables: 1  Open tables: 64  Queries
> per second avg: 11.555
>
> Die website ist schon relativ stark besucht - aber ich bin trotzdem der
> Meinung dass diese Hardware damit locker auskommen muesste.
>
> Beispiel: die load is jetzt gerade bei 3. "mysqladmin processlist" zeigt
> nur 6-12 Prozesse - 50% davon sind "Sleep".
>
> Hoert sich das ganze fuer euch eher nach einem Fehler in der
> Programmierung an oder nach einer Fehlkonfiguration in mySQL (vielleicht
> auch PHP?)? Wo kann ich mit der Suche nach dem Fehler weitermachen?
>
> Vielen Dank!
>
> Gruss,
> Markus
>
>
>
>
> --
> Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
> -->>  http://www.4t2.com/mysql
>

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive