mmofacts.com

Trennung von SharedWebspace?

gepostet vor 14 Jahre, 9 Monate von kneipengame

Ich habe nun seit einiger Zeit das Problem, dass zu Stoßzeiten der bekannte "max_user_connections" Fehler auftritt, weil zu viele Spieler gleichzeitig online sind bzw. auf meinem Webspace nur 25 Datenbankverbindungen gleichzeitig erlaubt sind. Ich habe auch schon alles erdenkliche optimiert, aber der Fehler kommt eben ab >200 Spielern online.

Kommt jedes Browserspiel in dieser Größenordnung an einem eigenen Server nicht vorbei oder gibt es Webspace Anbieter, die eine höhere Anzahl von gleichzeitigen Verbindungen (>25) zulassen?

Drücke mich irgendwie vor den enormen Kosten eines ManagedServers... Einen Root Server traue ich mir ehrlich gesagt nicht zu.

Bin ich wie immer Dankbar für Feedbacks!

gepostet vor 14 Jahre, 9 Monate von Nerosmeel
Schonmal an einen vServer mit Plesk o.ä. gedacht? Erleichtert das arbeiten erheblich.
gepostet vor 14 Jahre, 9 Monate von Todi42

Kann es evtl. helfen, die Anzahl der Anfragen, die der Webserver parallel bearbeitet auf 25 zu limitieren?

gepostet vor 14 Jahre, 9 Monate von RaydenDD

Was meinst du mit Datenbankverbindung? Mit Connection Pooling hat man doch sowieso nur 1 Verbindung über die alle Statements laufen oder?

gepostet vor 14 Jahre, 9 Monate von kneipengame

@Nerosmell: Ich habe einen V-Server getestet, aber der Aufwand zur Betreuung / Wartung ist mir nicht geheuer. Wehe ich bin mal weg und der Server will neu gestartet werden...

@Todi42: Wenn ich die Anfragen limitiere habe ich ja dasselbe Problem. Dieses hat dann nur eine andere bzw. zwei Ursachen.

@Rayden: Ich weiß nicht genau was Connection Pooling ist, aber ich recherchiere mal. Das Problem bei mir ist, dass mein Provider nur 25 gleichzeitige Verbindungen von PHP zur Datenbank zulässt. Also es klicken einfach mehr als 25 Leute gleichzeitig etwas an. Man kann die Verbindungen zu MySQL limitieren, was auch alle Provider machen um den verschiedenen Benutzern auf einem Server gewisse Ressourcen zu garantieren...

gepostet vor 14 Jahre, 9 Monate von RaydenDD

@Rayden: Ich weiß nicht genau was Connection Pooling ist, aber ich recherchiere mal. Das Problem bei mir ist, dass mein Provider nur 25 gleichzeitige Verbindungen von PHP zur Datenbank zulässt. Also es klicken einfach mehr als 25 Leute gleichzeitig etwas an. Man kann die Verbindungen zu MySQL limitieren, was auch alle Provider machen um den verschiedenen Benutzern auf einem Server gewisse Ressourcen zu garantieren...

Mit Connection Pooling benutzt nicht jedes Statement das du absetzt eine eigene Verbindung zur Datenbank, 200 Spieler kannst du wahrscheinlich ohne Probleme über eine einzelne Connection laufen lassen.

gepostet vor 14 Jahre, 9 Monate von tector

Also ich hab den Begriff Connection Pooling auch grad das erste Mal hier gehört und mal gegoogelt.

Es scheint als ob das mit PHP nicht so einfach machbar wäre und ich gehe mal davon aus, dass kneipengame PHP benutzt...

gepostet vor 14 Jahre, 9 Monate von tector

Das was ich bisher dazu lesen konnte besagt das pconnect() kein wirkliches Connection Pooling bietet und wohl generell eher probleme macht als hilft..

gepostet vor 14 Jahre, 9 Monate von kneipengame

Leider benutzt ich natürlich PHP. Was aber auch daran liegt, dass Webspace, welcher Java oder ähnliches bietet, auch eine andere Liga ist.

pconnect ist keine Alternative, da hier die Verbindung zwischen Server und Client gehalten wird und dadurch die 25 Verbindungen noch schneller erreicht werden.

Wie macht ihr das? Habt ihr alle einen eigenen Root-/Managed-/V-Server?

gepostet vor 14 Jahre, 9 Monate von tector

Db-Abfragen cachen? ... aber du sagtest ja, dass du schon alles optimiert hast..

gepostet vor 14 Jahre, 9 Monate von buhrmi

Nur als Idee ohne wirklich Ahnung davon zu haben wie man es in PHP macht: Wie wäre es mit Semaphoren die 25 mal accquired werden dürfen.

Also bei jedem mysql connect eine semaphore accquiren, und beim disconnect wieder releasen. Müsste gehen. Hab gerade mal nachgeguckt http://www.php.net/manual/en/function.sem-get.php

gepostet vor 14 Jahre, 9 Monate von buhrmi

Ach hab gerade gelesen dass das nur auf komischen System V Unix systemen funktioniert und man PHP für Semphorenunterstützung irgendwie speziell kompilieren muss. Ach PHP stinkt :O

gepostet vor 14 Jahre, 9 Monate von Kampfhoernchen

Ich würds mal so probieren: Wenn die Datenbank den "no open connections" wirft, nen sleep von 0,5 sekunden und dann nochmal probieren.

25 Verbindungen sollten für 200 User rein gefühlt ausreichen.

gepostet vor 14 Jahre, 9 Monate von RaydenDD

Ich hab gestern bei nen paar Bier noch mit nem früheren Arbeitskollegen gesprochen und dein Problem angesprochen, er hat gemeint mit ADODB müssts gehen:

http://adodb.sourceforge.net/

gepostet vor 14 Jahre, 9 Monate von kneipengame

Ich hab es mir mal angeschaut - tatsäclich, damit müsste es gehen!

Besten Dank dafür!!!

gepostet vor 14 Jahre, 9 Monate von buhrmi

Hmm... Mal für die dummen (ich verstehs nämlich nich)... Wirft das Teil keine Exception wenn die connection fehlschlägt?

Auf diese Diskussion antworten