serverload > 80

Lesenswerte Artikel, Anleitungen und Diskussionen
tobiask
Posts: 164
Joined: 2004-05-02 12:08
Location: NRW

serverload > 80

Post by tobiask » 2004-05-25 14:26

hi,


seid heute ist die serverload plötzlich über 80!!
in der processtabelle sind massig mysql connections drin.
aber wir haben nichts seid gestern geändert und wissen nicht wo die her kommen ...
wie kann ich den mysql timeout verringern das die nicht benutzen prozesse schneller gekillt werden?

auch waren massig zombies unterwegs ... :(

weiß aber grader keinen rat woher oder wieso die da sind.
hoffe ihr könnt mir helfen.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11578
Joined: 2003-02-27 01:00
Location: Hamburg

Re: serverload > 80

Post by Joe User » 2004-05-25 15:42

Es läuft mindestens ein PHP-Script amok und Du lässt persistente DB-Verbindungen zu.

Lösung1: Die Scripte überarbeiten und Persistente Verbindungen in der php.ini deaktivieren.
Lösung2: Die Scripte überarbeiten und mod_php gegen PHP-CGI austauschen.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

tobiask
Posts: 164
Joined: 2004-05-02 12:08
Location: NRW

Re: serverload > 80

Post by tobiask » 2004-05-25 16:03

Joe User wrote:Es läuft mindestens ein PHP-Script amok und Du lässt persistente DB-Verbindungen zu.

Lösung1: Die Scripte überarbeiten und Persistente Verbindungen in der php.ini deaktivieren.
Lösung2: Die Scripte überarbeiten und mod_php gegen PHP-CGI austauschen.
habe den übeltäter jetzt gefunden, ist was wbboard ...
was genau sind Persistente Verbindungen?
und gibt es nachteile wenn diese deaktiviert sind?

kase
RSAC
Posts: 1041
Joined: 2002-10-14 22:56

Re: serverload > 80

Post by kase » 2004-05-27 13:48

Persistente Connections sind dauerhafte Connections zum mySQL Server. Das bedeutet soviel, dass der Apache (mod_php) die Connection einmal aufbaut, und dann so lange offen hält, und immer wieder die gleiche Connection benutzt wird, bis du den Apache beendest.

Der einzige Nachteil von "normalen" Connection ist, dass mit jedem Seitenaufruf immer und immer wieder eine neue Connection aufgemacht und am Ende wieder beendet wird. Hört sich jetzt erstmal schlimmer an, als es ist, denn der mySQL Overhead um eine Connection zu öffnen ist minimal, somit wird die Performance nicht merkbar verschlechtert. Vorteile hat man dadurch aber eine ganze Menge, zB treten keine "toten" persistenten Connections auf, oder gerade auch in Verbindung mit Transaktionen hat man dadurch extreme Vorteile, wenn zB mal aus unbekanntem Grund eine Transaktion nicht richtig commited wird, usw.

arty
Userprojekt
Userprojekt
Posts: 761
Joined: 2002-06-12 10:11

Re: serverload > 80

Post by arty » 2004-05-27 14:14

Wenn PHP als CGI läuft, dann gibts keine persistenten MySQL-Verbindungen, auch wenn pconnect() genutzt wird. PHP ignoriert das dann.

bye
Thorsten

tobiask
Posts: 164
Joined: 2004-05-02 12:08
Location: NRW

Re: serverload > 80

Post by tobiask » 2004-05-27 14:22

kase wrote:Persistente Connections sind dauerhafte Connections zum mySQL Server. Das bedeutet soviel, dass der Apache (mod_php) die Connection einmal aufbaut, und dann so lange offen hält, und immer wieder die gleiche Connection benutzt wird, bis du den Apache beendest.

Der einzige Nachteil von "normalen" Connection ist, dass mit jedem Seitenaufruf immer und immer wieder eine neue Connection aufgemacht und am Ende wieder beendet wird. Hört sich jetzt erstmal schlimmer an, als es ist, denn der mySQL Overhead um eine Connection zu öffnen ist minimal, somit wird die Performance nicht merkbar verschlechtert. Vorteile hat man dadurch aber eine ganze Menge, zB treten keine "toten" persistenten Connections auf, oder gerade auch in Verbindung mit Transaktionen hat man dadurch extreme Vorteile, wenn zB mal aus unbekanntem Grund eine Transaktion nicht richtig commited wird, usw.
danke :)
hab die jetzt ausgestellt und läuft jetzt wieder einwandfrei!
danke für die hilfen und für die gute erklärung :)

majortermi
Userprojekt
Userprojekt
Posts: 930
Joined: 2002-06-17 16:09

Re: serverload > 80

Post by majortermi » 2004-05-27 21:12

kase wrote:Der einzige Nachteil von "normalen" Connection ist, dass mit jedem Seitenaufruf immer und immer wieder eine neue Connection aufgemacht und am Ende wieder beendet wird. Hört sich jetzt erstmal schlimmer an, als es ist, denn der mySQL Overhead um eine Connection zu öffnen ist minimal, somit wird die Performance nicht merkbar verschlechtert. Vorteile hat man dadurch aber eine ganze Menge, zB treten keine "toten" persistenten Connections auf, oder gerade auch in Verbindung mit Transaktionen hat man dadurch extreme Vorteile, wenn zB mal aus unbekanntem Grund eine Transaktion nicht richtig commited wird, usw.
Das eigentliche Problem von persistenten Connections ist - wie du gesagt hast - die mangelnde Kontroller und Transparenz in PHP.

Ein Connection-Pooling ist z.B. bei Java-Servlets auch sehr üblich, funktioniert dort allerdings (wenn der Entwickler aufpasst) so, dass eine Verbindung für eine Transaktion vom Pool angefordert und am Ende dieser wieder zurückgegeben wird - unabhängig davon, ob die Transaktion erfolgreich war oder nicht. Das lässt sich dort allerdings auch sehr einfach realisieren, weil man im Falle einer fehlgeschlagenen Transaktion einfach eine Exception auswerfen und sie dort wieder fangen kann, wo die Verbindung angefordert wurde, um sie wieder zurückzugeben.

Vielleicht wird sich das ja mit der Untstützung von Exceptions in PHP 5 auch verbessern.
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...

kase
RSAC
Posts: 1041
Joined: 2002-10-14 22:56

Re: serverload > 80

Post by kase » 2004-05-28 13:35

Mir ging es dabei eher um Scriptabbrüche, die in PHP immer mal wieder vorkommen, im simpelsten Falle, wenn der User auf den "Abbrechen" Button klickt, bevor das Script beendet ist, und man PHP nicht sagt, dass es dann weitermachen soll. Da nutzt dir dann das beste Error/Exception Handling nix, die einzigste Möglichkeit, die bleibt, da irgendwas mit der register_shutdown Function zu prüfen/machen, aber da ich eh keine pconnects verwende, habe ich mich mit diesem Problem noch nicht wirklich auseinander gesetzt.

Edit: Ist das nicht eigentlich ein Thread mit dem Thema mySQL, vielleicht könnte den ein Admin verschieben...

User avatar
Joe User
Project Manager
Project Manager
Posts: 11578
Joined: 2003-02-27 01:00
Location: Hamburg

Re: serverload > 80

Post by Joe User » 2004-05-28 14:47

kase wrote:Edit: Ist das nicht eigentlich ein Thread mit dem Thema mySQL, vielleicht könnte den ein Admin verschieben...
[x] Done.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.