Apache 2 öffnet dateien zu lange!?!
Apache 2 öffnet dateien zu lange!?!
Also, leider muss ich weit ausholen.
Und zwar betreibe ich ein Browsergame welches halt mindestens PHP 5.1 + PDO brauch. Es basiert auf einer Dateibasierten DB nämlich sqlite und eine selbst kreierten Dateibasierten DB.
Nun ist es so das der Apache2 server sich ziemlich lange an den Spielerfiles aufhält und diese Spieler sich dann aufgrund eines Datenbankfehlers nicht einloggen könne. Rausgefunden habe ich das indem ich den Spieler der sich nicht einloggen konnte mit "lsof | grep Spielername" getracet habe dies bringt dann folgende ausgabe.
apache2 21662 www-data 12uW REG 0,91 3046 26579397 /var/www/virtual/pyr0soft.de/htdocs/db1/players/bushido
wobei bushido der spielername ist welcher halt variiert.
Welche möglichkeiten hab ich das wieder vernümpftig hinzubekommen es lief nämlich mal einwandfrei.
Ich muss also immer den Apache2 restarten damit sich der bzw die betroffenen Spieler wieder einloggen können. Und das zum großteil im 30sek bis 2min Takt welches recht nervig ist.
Hat einer da vllt ne lösung parat? In der Log steht leider nichts drin was auf diesen Fehler zurückzuführen wäre.
Schonmal Vielen dank,
MFG
pyr0t0n
Und zwar betreibe ich ein Browsergame welches halt mindestens PHP 5.1 + PDO brauch. Es basiert auf einer Dateibasierten DB nämlich sqlite und eine selbst kreierten Dateibasierten DB.
Nun ist es so das der Apache2 server sich ziemlich lange an den Spielerfiles aufhält und diese Spieler sich dann aufgrund eines Datenbankfehlers nicht einloggen könne. Rausgefunden habe ich das indem ich den Spieler der sich nicht einloggen konnte mit "lsof | grep Spielername" getracet habe dies bringt dann folgende ausgabe.
apache2 21662 www-data 12uW REG 0,91 3046 26579397 /var/www/virtual/pyr0soft.de/htdocs/db1/players/bushido
wobei bushido der spielername ist welcher halt variiert.
Welche möglichkeiten hab ich das wieder vernümpftig hinzubekommen es lief nämlich mal einwandfrei.
Ich muss also immer den Apache2 restarten damit sich der bzw die betroffenen Spieler wieder einloggen können. Und das zum großteil im 30sek bis 2min Takt welches recht nervig ist.
Hat einer da vllt ne lösung parat? In der Log steht leider nichts drin was auf diesen Fehler zurückzuführen wäre.
Schonmal Vielen dank,
MFG
pyr0t0n
Re: Apache 2 öffnet dateien zu lange!?!
Was macht ein Webserver in der Datenbank?
Ich nehme mal an da läuft was mit deinem PHP Code schief.
Ich nehme mal an da läuft was mit deinem PHP Code schief.
Re: Apache 2 öffnet dateien zu lange!?!
naja in den userfiles wie oben angeben das ist für jeden benutzer eine datei. Diese sind aber zusätzlich noch bz2 komprimiert, loggt sich ein user nun ein wird die datei geöffnet und normalerweise das PW ausgelesen.
Re: Apache 2 öffnet dateien zu lange!?!
So lange die Datei zum schreiben geöffnet ist, werden nunmal andere Prozesse gelockt.
Re: Apache 2 öffnet dateien zu lange!?!
ja problem ist die ist bis zu 24 stunden zum schreiben geöffnet sind es vorher aber mal ging nur hatte ich da so nen beschissenes Debian system das ich gesagt hab ich mache einmal neu und spiele Halt apache + PHP inkl PDO wieder af und seit dem sind die probleme da die dateinen sind halt erst wieder zu wenn ich den apache restarte...
habe mal ne phpinfo geupt
http://www.pyr0soft.de/phpinfo.php
habe mal ne phpinfo geupt
http://www.pyr0soft.de/phpinfo.php
Re: Apache 2 öffnet dateien zu lange!?!
Schieb es ruihg auf den Apache... bist du dir gaaaaanz sicher, dass du auch ein fclose() machst, oder lässt du die Handles einfach im Speicher, in der Hoffnung, dass irgendwann ein lieber GC vorbei kommt und dies bemerkt?
Kann mir nicht vorstellen, dass der File solange im Speicher bleibt, wenn du den mittels fclose schließt...
Gruß
dtdesign
Kann mir nicht vorstellen, dass der File solange im Speicher bleibt, wenn du den mittels fclose schließt...
Gruß
dtdesign
Re: Apache 2 öffnet dateien zu lange!?!
ich schiebs nur auf den apache weil ichs net besser weiss wie oben schon geschrieben LSOF gibt mir als Prozess den apache2 an natürlich kann auch sein das PHP daran hängen bleibt immerhin wirds bei mod_php trotzdem der apache2 als prozess angegeben.
Re: Apache 2 öffnet dateien zu lange!?!
Du hast ein eigenes seltsames (aber natürliches besseres) DB System installiert, weil Du wie jeder andere PHP Programmierer weißt wie man eine richtige, bessere Datenbank programmieren muß. Dann bleibt dank Deiner PHP oder Datenbank Kenntnisse irgendwo mal was stehen und dann ist der Apache schuld?
Sorry wenn das jetzt überspitzt klingt, aber ich hab schon so viele Leute erlebt die meinten "Es ist besser, weil ich es gemacht habe" und dann von der Theorie (z.B. locking) keinen Plan haben.
Generell halte ich von deiner bz2 komprimierung nichts, solange Du genug Speicherplatz hast. Du kannst komprimierte Daten nicht durchsuchen, nicht indizieren, nicht schnell darauf zugreifen und hast noch zusätzlihen CPU overhead beim (temporären) entpacken.
Vielleicht hast Du auch die überlösung, aber es erinnert mich an meine Kollegen die meinen sie könnten durch hinzufügen von 2 Checksummen IPSec noch sicherer machen und es als neues Produkt verkaufen. Oder die Idee XML zu nehmen (weil es jeder macht und es cool ist) und diese xmls dann in blobs in einer DB zu speichern. Womit das die gleichen Probleme hatte wie ich oben angesprochen habe: Keine Indizierung kein schneller Zugriff usw.. zum Glück sind sie nach Kritik davon abgekommen..
Apache hält meiner Erfahrung nach Dateien solange offen wie er das braucht, warum er jetzt da abgeschmiert ist, oder da auf irgendetwas wartet liegt sicher ausserhalb des Einflußbereichs des Apache und mehr in deinen Scripten.
Sorry wenn das jetzt überspitzt klingt, aber ich hab schon so viele Leute erlebt die meinten "Es ist besser, weil ich es gemacht habe" und dann von der Theorie (z.B. locking) keinen Plan haben.
Generell halte ich von deiner bz2 komprimierung nichts, solange Du genug Speicherplatz hast. Du kannst komprimierte Daten nicht durchsuchen, nicht indizieren, nicht schnell darauf zugreifen und hast noch zusätzlihen CPU overhead beim (temporären) entpacken.
Vielleicht hast Du auch die überlösung, aber es erinnert mich an meine Kollegen die meinen sie könnten durch hinzufügen von 2 Checksummen IPSec noch sicherer machen und es als neues Produkt verkaufen. Oder die Idee XML zu nehmen (weil es jeder macht und es cool ist) und diese xmls dann in blobs in einer DB zu speichern. Womit das die gleichen Probleme hatte wie ich oben angesprochen habe: Keine Indizierung kein schneller Zugriff usw.. zum Glück sind sie nach Kritik davon abgekommen..
Apache hält meiner Erfahrung nach Dateien solange offen wie er das braucht, warum er jetzt da abgeschmiert ist, oder da auf irgendetwas wartet liegt sicher ausserhalb des Einflußbereichs des Apache und mehr in deinen Scripten.
Re: Apache 2 öffnet dateien zu lange!?!
hack net auf meinen scripten rum denn es sind noch nichtmal meine ^^ das spiel an sich ist opensource und es treten in einer nicht modifizierten original version diese probleme auf.
eigentlich hab ich hier nach hilfe gesucht, da ich mit meinem Server latein am ende bin, werde aber hingegen hier nur komisch von der seite angefahren...
eigentlich hab ich hier nach hilfe gesucht, da ich mit meinem Server latein am ende bin, werde aber hingegen hier nur komisch von der seite angefahren...
Re: Apache 2 öffnet dateien zu lange!?!
Du hast Hilfe bekommen.
a) Der Fehler ist zunächst im Script zu suchen
b) Der Fehler ist in PHP zu suchen
Ich bin mir relativziemlichfastganz sicher, dass eine dieser beiden Komponenten in dem Zusammenspiel das verbockt.
Da ich nichts weiß als die PHP-Version und die Tatsache, dass das Spiel sqlite benutzt, rate ich einfach mal drauf los:
Du benutzt fastcgi + php und das PHP Script das aufgerufen wird, schließt die Filehandle nicht korrekt.
a) Der Fehler ist zunächst im Script zu suchen
b) Der Fehler ist in PHP zu suchen
Ich bin mir relativziemlichfastganz sicher, dass eine dieser beiden Komponenten in dem Zusammenspiel das verbockt.
Da ich nichts weiß als die PHP-Version und die Tatsache, dass das Spiel sqlite benutzt, rate ich einfach mal drauf los:
Du benutzt fastcgi + php und das PHP Script das aufgerufen wird, schließt die Filehandle nicht korrekt.
Re: Apache 2 öffnet dateien zu lange!?!
Ja, das nehme ich auch an, rein von der Logik her. Aber ich habe das Gefühl, dass dies überlesen wurde:Blattlaus wrote:Du benutzt fastcgi + php und das PHP Script das aufgerufen wird, schließt die Filehandle nicht korrekt.
@pyr0t0n: Ich kann mich Blatlaus nur anschließen, du hast Hilfe bekommen, akzeptierst aber nicht die Tatsache, dass der Fehler egtl. nur seitens des Scripts/PHP auftreten kann.dtdesign wrote:[...] bist du dir gaaaaanz sicher, dass du auch ein fclose() machst, oder lässt du die Handles einfach im Speicher, in der Hoffnung, dass irgendwann ein lieber GC vorbei kommt und dies bemerkt?
Wir helfen dir gerne, dafür musst du aber a) bereit sein dir helfen zu lassen und eventuell auch b) relevante Code-Ausschnitte posten, damit wir dir auch helfen können.
Mit Ignoranz kommst du weder hier noch im normalen Leben weiter.
Gruß
dtdesign
Re: Apache 2 öffnet dateien zu lange!?!
das problem was mich ja stuztig macht, ist das es vorher einwandfrei lief und auch bei anderen ohne probleme läuft wie gesagt es ist opensource und es sind ein paar installationen vorhanden.
-
Roger Wilco
- Posts: 5923
- Joined: 2004-05-23 12:53
Re: Apache 2 öffnet dateien zu lange!?!
PHPNuke ist auch OSS und es sind ein paar Installationen vorhanden. Trotzdem ist es ein ziemlicher Dreck*. Schau nach, was du genau zwischen dem Funktionieren und Nichtfunktionieren geändert hast.pyr0t0n wrote:das problem was mich ja stuztig macht, ist das es vorher einwandfrei lief und auch bei anderen ohne probleme läuft wie gesagt es ist opensource und es sind ein paar installationen vorhanden.
Relevante Code-Abschnitte, Konfigurationsschnippsel o. ä. ähnliches hast du immer noch nicht genannt. Genausowenig bist du auf die Idee gekommen, das Skript mal mit einem Debugger à la APD oder XDebug zu untersuchen.
*: Meine Meinung. Muss nicht jeder teilen
Re: Apache 2 öffnet dateien zu lange!?!
naja eigneltich habe ich gegen "never change a running system" verstoßen und habe um den server ein wenig zu entwirren eine reinstall gemacht ^^ und seit dem treten die obengenannten probleme auf.
hatte eine so kreuzüberdrunterdurch kofing das einges schon startprobleme hatte und da hab ich mir gedacht machste mal neu ^^
So ich wünsch euch allen eine gute nacht ich meld mich morgen nochmal. habe php nun mal von hand kompiliert anstatt die debian pakete genommen zudem den neusten apache drauf. vllt hats ja geholfen.
danke nochmal an alle.
hatte eine so kreuzüberdrunterdurch kofing das einges schon startprobleme hatte und da hab ich mir gedacht machste mal neu ^^
So ich wünsch euch allen eine gute nacht ich meld mich morgen nochmal. habe php nun mal von hand kompiliert anstatt die debian pakete genommen zudem den neusten apache drauf. vllt hats ja geholfen.
danke nochmal an alle.