mysql_pconnect()
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
angriff
besucher
datenbank
externen server
gleichzeitige verbindungen
http
inhalt
limit
machen
offen bleiben
sagen
sekunde
server
stunde
system
url
verbindung
webseite
zugriff
-
Hallo
Ich würde gerne wissen was ressourcensparender ist, mysql_connect oder mysql_pconnect.
Ja, es gibt hier schon Threads und ich habe sie mir durchgelesen. Mehrere Quellen suggerierten mir, dass pconnect auf Systemen mit wenig CPU-Auslastung besser sei, connect auf Systemen mit ausreichend RAM.
http://www.php.net/manual/en/features.persistent-connections.php
https://www.lima-city.de/thread/connect-und-pconnect-mysql-mit-php
Jetzt geht es mir aber um bestimmte Beispielszenarien:
1. Der Webspaceanbieter limitiert die Zugriffe auf die Datenbank pro Stunde.
-> pconnect sollte in diesem Fall hilfreich sein, oder? Wenn nur 1000 Verbindungen pro Stunde (wie hier bei LC) erlaubt sind dann würden mit pconnect doch theoretisch 1000 Besucher pro Stunde auf die Seite kommen können.
Auch wäre hier interessant für wie lange die Verbindungen dann offen bleiben, gibt es auch für gleichzeitige Verbindungen Limits und wie finde ich das heraus?
2. DDoS-Angriff.
Wenn ein Server mit gigabit-Anbindung meine Seite aufruft und mit pconnect auf die Datenbank zugegriffen wird sollte dies doch eine stark reduzierte Belastung im Vergleich zu connect sein.
Es wäre dann aber blöd wenn bei einem Angriff von einem Botnetz irgendwann 10 Millionen Verbindungen offen sind.
-> was ist für jedes Beispiel am besten?
mfg
Beitrag zuletzt geändert: 27.5.2012 19:47:46 von voloya -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
voloya schrieb:
Mit pconnect können mehr als 1000 Benutzer auf die Webseite, da ja die Verbindung ja offen bleibt.
1. Der Webspaceanbieter limitiert die Zugriffe auf die Datenbank pro Stunde.
-> pconnect sollte in diesem Fall hilfreich sein, oder? Wenn nur 1000 Verbindungen pro Stunde (wie hier bei LC) erlaubt sind dann würden mit pconnect doch theoretisch 1000 Besucher pro Stunde auf die Seite kommen können.
Auch wäre hier interessant für wie lange die Verbindungen dann offen bleiben, gibt es auch für gleichzeitige Verbindungen Limits und wie finde ich das heraus?
Es gibt ein Limit für maximale gleichzeitige Verbindungen.
Bei connect wird halt jedes mal eine Verbindung aufgemacht, SQL ausgeführt und am ende wieder geschlossen. Beim pconnect wird die Verbindung hingegen nur 1x geöffnet und bleibt offen...
Beim DDoS hast du noch die Begrenzung der maximalen gleichzeitigen Verbindungen... also mit den 10 mio Verbindungen gleichzeitig wirds wohl nichts. -
pconnect hängt stark vom overhead ab. Oft liest man, es sei gut, besonders für gut besuchte Seiten, aus dem einfachen Faktum raus, dass dann der Overhead nicht ständig gebraucht wird, es müssen nicht endlos viele Sockets aufgebaut werden. Hier würde pconnect bestimmt gut helfen. Doch wenn die Seite wenig besucht ist, dann leitet die pconnect zu einer längen unnötigen Last.
Hier auf Lima würde ich sagen lohnt sich pconnect zb, weil man dann eine länger haltene Verbindung hat, und nicht im Notfall warten muss, bis der MySQL Server von anderen Usern freigegeben wird. Das wäre aber bei einer schlecht besuchten Seite nicht im Sinne des Fair Uses, weil es einfach nur egoistisch ist.
Also hier auf Lima lohnt es sich sicher, aber auch nur, weil es einen externen Server für die Verbindung gibt. Ansonsten, wenn alles auf einen Server bleibt, würde ich mal sagen, bleibt es sich gleich.
Soweit von mir.
Liebe Grüße -
ggamee schrieb:
Auf einer Seite wie hier zahlt sich pconnect aus (auf lima-city gehostet), da jeder User alle 2 Sekunden ein Update macht bei dem aus der MySQL-Datenbank gelesen wird. Ohne pconnect ist das Limit von maximalen Verbindungen pro Stunde sehr schnell überschritten...
Also hier auf Lima lohnt es sich sicher, aber auch nur, weil es einen externen Server für die Verbindung gibt. Ansonsten, wenn alles auf einen Server bleibt, würde ich mal sagen, bleibt es sich gleich.
Und lauter offene MySQL-Verbindungen verbrauchen Sockets, bei schlecht besuchten Seiten also reine Verschwendung.
Der Overhead der bei pconnect wegfällt ist ständig neue Verbindungen aufmachen und wieder schließen, da Verbindungen ja weiterverwendet werden. -
Hallo
Vielen Dank für die Antworten!
hackyourlife schrieb:
Und lauter offene MySQL-Verbindungen verbrauchen Sockets, bei schlecht besuchten Seiten also reine Verschwendung..
Da du ja pconnect bei deiner Seite empfiehlst, die alle 2 Sekunden eine Abfrage macht, wird wohl pconnect auch auf einer Webseite sinnvoll sein, die jeglichen Inhalt aus einer Datenbank lädt?
Wo kann ich denn sehen wie viele Verbindungen gleichzeitig zugelassen sind? Und was passiert wenn die erreicht werden, werden dann einfach alte geschlossen? Wie lange hält so ein pconnect überhaupt?
mfg -
voloya schrieb:
Solange du keine 1000 Verbindungen pro Stunde zusammenbringst brauchst du das nicht... erst bei extrem vielen Verbindungen bringt das was, also bei einem Chat oder bei der verlinkten Seite von mir.
Da du ja pconnect bei deiner Seite empfiehlst, die alle 2 Sekunden eine Abfrage macht, wird wohl pconnect auch auf einer Webseite sinnvoll sein, die jeglichen Inhalt aus einer Datenbank lädt?
voloya schrieb:
In der MySQL-Konfiguration
Wo kann ich denn sehen wie viele Verbindungen gleichzeitig zugelassen sind?
voloya schrieb:
Dann sollten keine neuen Verbindungen mehr angenommen werden (?). Deshalb ist es nicht Zielführend wenn jeder hier mysql_pconnect verwendet.
Und was passiert wenn die erreicht werden, werden dann einfach alte geschlossen?
voloya schrieb:
Die sollte ewig halten... ich vermute aber dass es da auch ein Timeout geben wird.
Wie lange hält so ein pconnect überhaupt? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage