Mailinglisten-Archive |
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
php::bar PHP Wiki - Listenarchive