Mailinglisten-Archive |
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