Re: php error müllt apache2 log voll
- Ursprüngliche Message - Von: Heiko Schlittermann h...@schlittermann.de An: lug-dd@mailman.schlittermann.de CC: Gesendet: 22:24 Sonntag, 16.Dezember 2012 Betreff: Re: php error müllt apache2 log voll Moin, Grimnin Fridyson fridy_lu...@yahoo.de (Sa 15 Dez 2012 23:35:09 CET): Betriebsystemkomponente die die Logfiles schreibt, vor jeder Zeile die sie schreibt schaut, sind zB. noch mindestes 30mb freier Speicher? Ja! Du könntest im logrotat ein filesize einstellen. wenn du ein paar logs aufheben willst, kannst du sie noch komprimieren. (Informationen können verloren gehen) logrotate ist aber kein Daemon, der dann plötzlich aktiv wird. Sondern das mit der Filesize zieht auch nur immer dann, wenn er aufgerufen wird (typischerweise 1x täglich) haste natürlich recht man könnte das apache log an den rsyslog senden http://wiki.rsyslog.com/index.php/Working_Apache_and_Rsyslog_configuration und dann rsyslog so einrichten das es rotiert http://www.rsyslog.com/doc/log_rotation_fix_size.html Andreas -- Heiko ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
tranquillo sportfreund_rob...@gmx.de wrote: Die Logs sollten doch auf einer eigenen Partition liegen. Wenn die vollläuft, sieht man doch, was die Ursache ist. Ich verstehe nicht. Der Server hat nur eine Partition (zumindest sehe ich die bei meiner VM das nur so). Ohh okay. Man kann aber auch eine ded. Partition für /var oder /var/logs machen, und diese monitoren. Dann ist halt /var voll, und nicht Deine eigentliche Daten-Partition. Vereinfach die Fehlersuche... Nur weil / voll ist ohne weitere Untersuchung warum einen Zukauf machen ist aber IMHO, ähm, gaga. Die Ursache ist auch klar. Eine Endlosschleife welche beim rumprobieren schonmal vorkommt ( die php-standardlösung beim Dateizugriff: while (false !== ($file = readdir($src))){ ... } ). Tja, shit happens... Ich will das es nicht passiert das ein log welches auf Grund eines Benutzerfehlers geschrieben wird den Server platt macht. Also entweder irgendwelche harte Grenzen in php oder auf Basis des darunterliegenden debian. Nun ja, Du kannst auch fork-Bomben basteln oder andere böse Dinge. Zum 'spielen' nimmt man halt keine Produktionssysteme. Andreas -- Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect. (Linus Torvalds) If I was god, I would recompile penguin with --enable-fly. (unknown) Kaufbach, Saxony, Germany, Europe. N 51.05082°, E 13.56889° signature.asc Description: Digital signature ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
Moinsen :) Am 16.12.2012 09:22, schrieb Andreas Kretschmer: tranquillo sportfreund_rob...@gmx.de wrote: Die Logs sollten doch auf einer eigenen Partition liegen. Wenn die vollläuft, sieht man doch, was die Ursache ist. Ich verstehe nicht. Der Server hat nur eine Partition (zumindest sehe ich die bei meiner VM das nur so). Ohh okay. Man kann aber auch eine ded. Partition für /var oder /var/logs machen, und diese monitoren. Dann ist halt /var voll, und nicht Deine eigentliche Daten-Partition. Vereinfach die Fehlersuche... Nur weil / voll ist ohne weitere Untersuchung warum einen Zukauf machen ist aber IMHO, ähm, gaga. Ich bin nicht sicher ob ich den Satz verstanden haben, er lässt sich schwierig parsen :) Aber der Zukauf von Speicher war nötig, da die Kiste garnicht mehr hochfuhr und das RZ mir alternativ anbot bestimmte Dateien zu löschen, die ich Pfad-genau hätte angeben müssen. Aber weder war zu dem Zeitpunkt schon klar wo genau das Problem liegt noch was die großen Dateien auf dem System sind. Ergo war das die sinnvollste Entscheidung. Zumal das sowieso schon mehrfach auf der Agenda stand. Ich will das es nicht passiert das ein log welches auf Grund eines Benutzerfehlers geschrieben wird den Server platt macht. Also entweder irgendwelche harte Grenzen in php oder auf Basis des darunterliegenden debian. Nun ja, Du kannst auch fork-Bomben basteln oder andere böse Dinge. Zum 'spielen' nimmt man halt keine Produktionssysteme. Wie ganz oben schon geschrieben, es handelt sich um mein Dev/Spiel-System. Lokale Installationen nutzen mir überhaupt nichts, da mein Lappi Windows hat, das würde mindestens erhöhten und bis doppelten Test und Programieraufwand erzeugen. Zu dem können garnicht alle Applikationen lokal repliziert werden, da sie in abhängige Gebilde eingebettet sind. Und zu guter letzt, würde erstens Windows keine 200mb logfile schreiben und zweitens der Läppi wegen einer 200mb logfile nicht abstürzen (der gewonnen Erkenntnisgewinnn wäre also geringer). Die Idee mit der Pipe finde ich sehr genial und könnte genau das richtige sein, klingt aber für mich noch etwas kompliziert. Die Geschichte mit extra logpartition ist sicherlich möglich... aber... jetzt geht mal ganz tief in euch.. und seid mal ganz ehrlich zu euch selbst, wenn euch ein Betriebsystem angeboten würde, nennen wir es Windows BlueFlubber, Mac OS Tigerlilly oder Kim.COM OS worldwide oder what ever und ihr erfahrt um sicher darauf proggen zu können (nur ganz schnöder php/sql kram) müsst ihr eine eigene Partition anlegen weil sonst das logfile den Server innerhalb 1-2Minuten wegschiessen kann.. würdet ihr auch nur eine Minute daran verschwenden dieses Betriebsystem zur Arbeit in Betracht zu ziehen? Ich weiß, ihr fühlt euch auf den Schlips getreten weil jemand euer baby schlecht macht, aber ich sehe es aus absolut praktischer Sicht und ohne Wertung oder bösen Willen. Aber so eine Lösung kann und will ich nicht akzeptieren. :) Naja.. lassen wir das, die Chance das das nochmal Auftritt ist ja extrem gering, als Antwort darauf hab ich aber mein DiscMonitoring gleich noch ausgeweitet und verbessert und muss halt noch aufmerksamer bei Dateizugriffen und Schleifen sein Viele Grüße und Danke für die umfangreiche Diskussion Rob ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
Moin moin, On Sun, Dec 16, 2012 at 11:42:25AM +0100, tranquillo wrote: Am 16.12.2012 09:22, schrieb Andreas Kretschmer: tranquillo sportfreund_rob...@gmx.de wrote: Die Logs sollten doch auf einer eigenen Partition liegen. Wenn die vollläuft, sieht man doch, was die Ursache ist. Ich verstehe nicht. Der Server hat nur eine Partition (zumindest sehe ich die bei meiner VM das nur so). Ohh okay. Man kann aber auch eine ded. Partition für /var oder /var/logs machen, und diese monitoren. Dann ist halt /var voll, und nicht Deine eigentliche Daten-Partition. Vereinfach die Fehlersuche... Nur weil / voll ist ohne weitere Untersuchung warum einen Zukauf machen ist aber IMHO, ähm, gaga. Aber der Zukauf von Speicher war nötig, da die Kiste garnicht mehr hochfuhr und das RZ mir alternativ anbot bestimmte Dateien zu löschen, die ich Pfad-genau hätte angeben müssen. Aber weder war zu dem Zeitpunkt schon klar wo genau das Problem liegt noch was die großen Dateien auf dem System sind. Ergo war das die sinnvollste Entscheidung. Zumal das sowieso schon mehrfach auf der Agenda stand. Nunja, ich hätte an deiner Stelle wohl die Jungs vom RZ nach einmal du -cshx /*/ gefragt, und dann mir die Infos geben lassen. Einfach auf gut Glück dem Kunden eine Speichererweiterung anzudrehen, nur weil ein paar Logfiles gewachsen sind ist echt ein starkes Stück. Ich will das es nicht passiert das ein log welches auf Grund eines Benutzerfehlers geschrieben wird den Server platt macht. Also entweder irgendwelche harte Grenzen in php oder auf Basis des darunterliegenden debian. Nun ja, Du kannst auch fork-Bomben basteln oder andere böse Dinge. Zum 'spielen' nimmt man halt keine Produktionssysteme. Wie ganz oben schon geschrieben, es handelt sich um mein Dev/Spiel-System. Lokale Installationen nutzen mir überhaupt nichts, da mein Lappi Windows hat, das würde mindestens erhöhten und bis doppelten Test und Programieraufwand erzeugen. Zu dem können garnicht alle Applikationen lokal repliziert werden, da sie in abhängige Gebilde eingebettet sind. Und zu guter letzt, würde erstens Windows keine 200mb logfile schreiben und zweitens der Läppi wegen einer 200mb logfile doch, würde es (wenn du Apache2 + PHP mit demselben Problem belastest) nicht abstürzen (der gewonnen Erkenntnisgewinnn wäre also geringer). Nun, das nicht, aber wahrscheinlich echt lahm werden.. Im Endeffekt nehmen sich da alle Systeme nichts. Die Idee mit der Pipe finde ich sehr genial und könnte genau das richtige sein, klingt aber für mich noch etwas kompliziert. Wenn mir mal langweilig ist implementier ich das mal ;) Die Geschichte mit extra logpartition ist sicherlich möglich... aber... jetzt geht mal ganz tief in euch.. und seid mal ganz ehrlich zu euch selbst, wenn euch ein Betriebsystem angeboten würde, nennen wir es Windows BlueFlubber, Mac OS Tigerlilly oder Kim.COM OS worldwide oder what ever und ihr erfahrt um sicher darauf proggen zu können (nur ganz schnöder php/sql kram) müsst ihr eine eigene Partition anlegen weil sonst das logfile den Server innerhalb 1-2Minuten wegschiessen kann.. würdet ihr auch nur eine Minute daran verschwenden dieses Betriebsystem zur Arbeit in Betracht zu ziehen? Nunja, man sollte immer das große Ganze im Blick haben - und ja, alle Logfiles gehören auf eine sperate Platte oder einen seperaten Container. Damit meine ich z.B. auch unter Windows die Event-Logs, die auch nur in einem Ringpuffer von per Default 2MB landen. Ich weiß, ihr fühlt euch auf den Schlips getreten weil jemand euer baby schlecht macht, aber ich sehe es aus absolut praktischer Sicht und ohne Wertung oder bösen Willen. Aber so eine Lösung kann und will ich nicht akzeptieren. :) Nunja, dann fordere sie einfach von deinem Technischen Dienstleister - den RZ-Leuten.. denn die haben dir ein System vorgesetzt, was abkackt wenn du die Logs zumüllst.. es ist weder Aufgabe von Apache noch einem Syslog-Daemon, den freien Speicher zu überwachen.. Das ist der Job für andere Tools, und wenn du z.B. zuhause ein Standard Debian mit der Standard-Partitionierung installiert bekommst du von alleine eine /var Partition, weil es einfach Sinn macht. Und wenn du da etwas anderes machen willst endet das genauso wie wenn man ein Auto in der Mitte durchsägt: es fährt noch, aber hat keine Chance die Ideal-Linie zu halten.. Gruß, Andre -- Andre Klärner smime.p7s Description: S/MIME cryptographic signature ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
On Sunday 16 December 2012 11:42:25 tranquillo wrote: Nun ja, Du kannst auch fork-Bomben basteln oder andere böse Dinge. Zum 'spielen' nimmt man halt keine Produktionssysteme. Wie ganz oben schon geschrieben, es handelt sich um mein Dev/Spiel-System. Genau da liegt ein wesentliches Problem: es mag ein System sein welches als Dev bezeichnet wird, aber es liegt nicht in Deiner Kontroller und verursacht Kosten wenn Du Fehler machst. Lokale Installationen nutzen mir überhaupt nichts, da mein Lappi Windows hat, das würde mindestens erhöhten und bis doppelten Test und Programieraufwand erzeugen. VirtualBox. Ich habe auf meinen Entwicklerlaptops mehrere VMs mit verschiedenen Betriebssystemen und Versionen - das hat sich als sehr sinnvoll erwiesen. Zu dem können garnicht alle Applikationen lokal repliziert werden, da sie in abhängige Gebilde eingebettet sind. Mach mal einen Schritt zurück von Deinem Problem und denk' ernsthaft über Dein Entwicklungsmodell nach. Wenn Du Deine Applikation nicht auf einer von Dir kontrollierten Umgebung testen kannst (auch Amokläufe in Logs sind Tests), dann hast Du ein ernsthaftes Problem mit der Qualitätssicherung. Tipp: das sind Probleme die strategisch angegangen werden müssen. Und zu guter letzt, würde erstens Windows keine 200mb logfile schreiben und zweitens der Läppi wegen einer 200mb logfile nicht abstürzen (der gewonnen Erkenntnisgewinnn wäre also geringer). Ich kenne Gegenbeispiele für beide Aussagen. Ich habe oft genug vor Windows- Servern gesessen, die ihre Software nicht mehr starten wollten, weil das Event-Log voll war. Und ich habe auch nahezu jede Art von Hardware/Software- Kombination abgestürzt, eingefroren, oder sonstwie unbrauchbar gesehen. Mit genug Schwung kriegt man jeden Server aus seinem stabilen Zustand geworfen... ;-) Die Idee mit der Pipe finde ich sehr genial und könnte genau das richtige sein, klingt aber für mich noch etwas kompliziert. Die Geschichte mit extra logpartition ist sicherlich möglich... aber... jetzt geht mal ganz tief in euch.. und seid mal ganz ehrlich zu euch selbst, wenn euch ein Betriebsystem angeboten würde, nennen wir es Windows BlueFlubber, Mac OS Tigerlilly oder Kim.COM OS worldwide oder what ever und ihr erfahrt um sicher darauf proggen zu können (nur ganz schnöder php/sql kram) müsst ihr eine eigene Partition anlegen weil sonst das logfile den Server innerhalb 1-2Minuten wegschiessen kann.. würdet ihr auch nur eine Minute daran verschwenden dieses Betriebsystem zur Arbeit in Betracht zu ziehen? Ja. Lieber als eins bei dem ich erfahre dass noch niemand eine Lösung für dieses Problem hat. Gewöhn Dich an den Gedanken dass Du bei jedem System ein paar Regeln beachten musst oder mit den Konsequenzen der Nichtbeachtung zu leben hast. Ich weiß, ihr fühlt euch auf den Schlips getreten weil jemand euer baby schlecht macht, aber ich sehe es aus absolut praktischer Sicht und ohne Wertung oder bösen Willen. Aber so eine Lösung kann und will ich nicht akzeptieren. :) Ich habe kein Problem damit - ist ja nicht mein Baby, sondern nur das Betriebssystem was sich in meinem Alltag als das produktivste herausgestellt hat. Wenn Du keine Lösungen akzeptieren willst solltest Du Dir ganz dringend eine neue Beschäftigung suchen. Beim Winterdienst werden im Augenblick ganz dringend Helfer gesucht. ;-P Naja.. lassen wir das, die Chance das das nochmal Auftritt ist ja extrem gering, Nein. Das tritt jedesmal auf wenn Du Blödsinn in Schleifen packst. Das ist normaler Programmieralltag. Alternativ wirst Du andere interessante Probleme sehen. als Antwort darauf hab ich aber mein DiscMonitoring gleich noch ausgeweitet und verbessert und muss halt noch aufmerksamer bei Dateizugriffen und Schleifen sein Korrekt so. Konrad signature.asc Description: This is a digitally signed message part. ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
Moin, Grimnin Fridyson fridy_lu...@yahoo.de (Sa 15 Dez 2012 23:35:09 CET): Betriebsystemkomponente die die Logfiles schreibt, vor jeder Zeile die sie schreibt schaut, sind zB. noch mindestes 30mb freier Speicher? Ja! Du könntest im logrotat ein filesize einstellen. wenn du ein paar logs aufheben willst, kannst du sie noch komprimieren. (Informationen können verloren gehen) logrotate ist aber kein Daemon, der dann plötzlich aktiv wird. Sondern das mit der Filesize zieht auch nur immer dann, wenn er aufgerufen wird (typischerweise 1x täglich) -- Heiko signature.asc Description: Digital signature ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
php error müllt apache2 log voll
Hi, eine wild gewordene Schleife in PHP müllt mir die /var/log/apache2/error_meineIP.de.log voll.. und zwar so richtig. letzte Woche war der Server dadurch so voll das das RZ den Kasten stoppen, mir eine Speichererweiterung verkaufen und dann neustarten musste. Dannach hab ich die erste 200mb riesige log gefunden. Eben, beim arbeiten hab ich eine 300mb große log erzeugt. Klar, ich baue grade an dem Sript rum, da kommt eine Endlosschleife schon mal vor, es kann doch aber nicht sein das die Logs da so zu geballert werden das die Maschine den Heldentot stirbt. Was ausser logging ganz abschalten kann man da machen? Grüße Rob ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
Hi! Am 15. Dezember 2012 12:25 schrieb tranquillo sportfreund_rob...@gmx.de: eine wild gewordene Schleife in PHP müllt mir die /var/log/apache2/error_meineIP.de.log voll. Normalerweise greifen PHP-Programme nicht auf andere Programmteile über den behäbigen Webserver zu, sondern gehen übers Dateisystem oder die Datenbank. Aber wenn, sollten die abgerufenen URLs wenigstens funktionierende Scripte enthalten und nicht Fehler verursachen. Error-Logging abzuschalten, weil Fehler auftreten, ist ja wohl nicht ernst gemeint ;-) Thomas ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
tranquillo sportfreund_rob...@gmx.de wrote: Hi, eine wild gewordene Schleife in PHP müllt mir die /var/log/apache2/error_meineIP.de.log voll.. und zwar so richtig. letzte Woche war der Server dadurch so voll das das RZ den Kasten stoppen, mir eine Speichererweiterung verkaufen und dann neustarten musste. Dannach hab ich die erste 200mb riesige log gefunden. Eben, beim Ähm, whot? Die Logs sollten doch auf einer eigenen Partition liegen. Wenn die vollläuft, sieht man doch, was die Ursache ist. Andreas -- Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect. (Linus Torvalds) If I was god, I would recompile penguin with --enable-fly. (unknown) Kaufbach, Saxony, Germany, Europe. N 51.05082°, E 13.56889° signature.asc Description: Digital signature ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
Hi Andreas, Am 15.12.2012 12:32, schrieb Andreas Kretschmer: tranquillo sportfreund_rob...@gmx.de wrote: Hi, eine wild gewordene Schleife in PHP müllt mir die /var/log/apache2/error_meineIP.de.log voll.. und zwar so richtig. letzte Woche war der Server dadurch so voll das das RZ den Kasten stoppen, mir eine Speichererweiterung verkaufen und dann neustarten musste. Dannach hab ich die erste 200mb riesige log gefunden. Eben, beim Ähm, whot? Die Logs sollten doch auf einer eigenen Partition liegen. Wenn die vollläuft, sieht man doch, was die Ursache ist. Ich verstehe nicht. Der Server hat nur eine Partition (zumindest sehe ich die bei meiner VM das nur so). Die Ursache ist auch klar. Eine Endlosschleife welche beim rumprobieren schonmal vorkommt ( die php-standardlösung beim Dateizugriff: while (false !== ($file = readdir($src))){ ... } ). Ich will das es nicht passiert das ein log welches auf Grund eines Benutzerfehlers geschrieben wird den Server platt macht. Also entweder irgendwelche harte Grenzen in php oder auf Basis des darunterliegenden debian. Grüße Rob ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
Hi Thomas, Am 15.12.2012 12:30, schrieb Thomas Schmidt: Hi! Am 15. Dezember 2012 12:25 schrieb tranquillo sportfreund_rob...@gmx.de: eine wild gewordene Schleife in PHP müllt mir die /var/log/apache2/error_meineIP.de.log voll. Normalerweise greifen PHP-Programme nicht auf andere Programmteile über den behäbigen Webserver zu, sondern gehen übers Dateisystem oder die Datenbank. Aber wenn, sollten die abgerufenen URLs wenigstens funktionierende Scripte enthalten und nicht Fehler verursachen. Das log war damit voll das die php-Funktion readdir() eine Datei auf dem Server nicht finden konnte. Diese wurde halt auch über den webserver raus geprintet. Das php den Fehler wirft ist völlig legitim, das war ein dummer Fehler den ich in die Schleife gebaut habe, aber das den Server gleich umhaut ist nicht akzeptabel. Grüße Robert ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
while (false !== ($file = readdir($src))){ ... } ) Wenn $src eine URL ist, testest du damit die Performance des Servers. War doch ein voller Erfolg. Ansonsten ist es extrem unwahrscheinlich, dass du aus Versehen mal 200MB Logfiles produzierst. ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
Hallo Robert, was du hier bemängelst ist kein PHP-Problem. Jedes Programm kann Logfiles zum Überlaufen bringen. Deshalb gibt es auch je ein Dev-, Stage- und Live-System. Entweder du entwickelst lokal oder du fängst solche Fehler gleich ordentlich ab. Sonst kann ich nur Andreas zustimmen: Error-Loging ausschalten weil es Errors gibt? In welchem Programmierkurs lernt man denn das? Gruß, Falk Zitat von tranquillo sportfreund_rob...@gmx.de: Hi Thomas, Am 15.12.2012 12:30, schrieb Thomas Schmidt: Hi! Am 15. Dezember 2012 12:25 schrieb tranquillo sportfreund_rob...@gmx.de: eine wild gewordene Schleife in PHP müllt mir die /var/log/apache2/error_meineIP.de.log voll. Normalerweise greifen PHP-Programme nicht auf andere Programmteile über den behäbigen Webserver zu, sondern gehen übers Dateisystem oder die Datenbank. Aber wenn, sollten die abgerufenen URLs wenigstens funktionierende Scripte enthalten und nicht Fehler verursachen. Das log war damit voll das die php-Funktion readdir() eine Datei auf dem Server nicht finden konnte. Diese wurde halt auch über den webserver raus geprintet. Das php den Fehler wirft ist völlig legitim, das war ein dummer Fehler den ich in die Schleife gebaut habe, aber das den Server gleich umhaut ist nicht akzeptabel. Grüße Robert ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
Am 15.12.2012 13:34, schrieb Thomas Schmidt: while (false !== ($file = readdir($src))){ ... } ) Wenn $src eine URL ist, testest du damit die Performance des Servers. War doch ein voller Erfolg. Es war keine URL sondern die Datei: /var/www/blubb//data.xml .. die konnte die Funktion aber nicht finden (//), hat aber auch die while nicht beendet. Evtl. eine fehlerhafte Implementation von php? Trozdem möchte ch in Zukunft gern verhindern, wenn ich mal einen Fehler mache das ich nicht beim RZ anrufen und die Kiste wiederbeleben lassen muss. Ansonsten ist es extrem unwahrscheinlich, dass du aus Versehen mal 200MB Logfiles produzierst. Awesome! habs schon 2mal in einer Woche geschafft. :) (300mb beim 2ten! benötigte Dauer etwa 2min) Grüße Rob ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
while (false !== ($file = readdir($src))){ ... } ) Es war keine URL sondern die Datei: /var/www/blubb//data.xml Was hast du genau gemacht? ? readdir(/var/www/blubb//data.xml); ? bringt bei mir: Warning: readdir() expects parameter 1 to be resource, string given in /blaaa/crashtest.php on line 2 ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
Hi Falk, Am 15.12.2012 13:35, schrieb falk.doer...@fadoe.de: Hallo Robert, was du hier bemängelst ist kein PHP-Problem. Jedes Programm kann Logfiles zum Überlaufen bringen. Oh.. das is ja nicht so schön. Deshalb gibt es auch je ein Dev-, Stage- und Live-System. Entweder du entwickelst lokal oder du fängst solche Fehler gleich ordentlich ab. Wie genau fängt man einen Fehler ab von dem man erst weiß wenn man bei RZ anrufen muss um zu klären warum selbst kein Ping mehr auf seiner (DEV-) Maschine möglich ist? Sonst kann ich nur Andreas zustimmen: Error-Loging ausschalten weil es Errors gibt? In welchem Programmierkurs lernt man denn das? Beide behauptungen sind Unwahr! Weder hatte ich das je vor noch hat Andreas dem wiedersprochen. Ich hab mich an die Grupppe gewendet um genau das nicht zu tun. Gruß, Falk Grüße Rob Zitat von tranquillo sportfreund_rob...@gmx.de: Hi Thomas, Am 15.12.2012 12:30, schrieb Thomas Schmidt: Hi! Am 15. Dezember 2012 12:25 schrieb tranquillo sportfreund_rob...@gmx.de: eine wild gewordene Schleife in PHP müllt mir die /var/log/apache2/error_meineIP.de.log voll. Normalerweise greifen PHP-Programme nicht auf andere Programmteile über den behäbigen Webserver zu, sondern gehen übers Dateisystem oder die Datenbank. Aber wenn, sollten die abgerufenen URLs wenigstens funktionierende Scripte enthalten und nicht Fehler verursachen. Das log war damit voll das die php-Funktion readdir() eine Datei auf dem Server nicht finden konnte. Diese wurde halt auch über den webserver raus geprintet. Das php den Fehler wirft ist völlig legitim, das war ein dummer Fehler den ich in die Schleife gebaut habe, aber das den Server gleich umhaut ist nicht akzeptabel. Grüße Robert ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
Hi Thomas, Am 15.12.2012 13:52, schrieb Thomas Schmidt: while (false !== ($file = readdir($src))){ ... } ) Es war keine URL sondern die Datei: /var/www/blubb//data.xml Was hast du genau gemacht? ? readdir(/var/www/blubb//data.xml); ? bringt bei mir: Warning: readdir() expects parameter 1 to be resource, string given in /blaaa/crashtest.php on line 2 Genau und mit der While von oben drum herum wirds ein zu Silvester sehr beliebter Serverkracher. Grüße Rob ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
Hallo Robert, ich gebe dir mal einen bösen Tipp, wobei ich mir gleich die Finger in Weihwasser waschen werde. Denn was du da in deiner Endlosschleife machst widerspricht jeder guten Programmierung: while (false !== ($file = @readdir($src))){ ... } Das sollte klappen. Viele Grüße, Falk Zitat von tranquillo sportfreund_rob...@gmx.de: Hi Thomas, Am 15.12.2012 13:52, schrieb Thomas Schmidt: while (false !== ($file = readdir($src))){ ... } ) Es war keine URL sondern die Datei: /var/www/blubb//data.xml Was hast du genau gemacht? ? readdir(/var/www/blubb//data.xml); ? bringt bei mir: Warning: readdir() expects parameter 1 to be resource, string given in /blaaa/crashtest.php on line 2 Genau und mit der While von oben drum herum wirds ein zu Silvester sehr beliebter Serverkracher. Grüße Rob ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
On Sat, Dec 15, 2012 at 12:25:29PM +0100, tranquillo wrote: eine wild gewordene Schleife in PHP müllt mir die /var/log/apache2/error_meineIP.de.log voll.. und zwar so richtig. den Heldentot stirbt. Was ausser logging ganz abschalten kann man da machen? Moin Rob, hast du mal geschaut wie du dem Apache beibringst, dass ein PHP-Skript nur so-und-soviele Sekunden laufen darf? Dann wird egal was für eine Endlos-Schleife du produzierst das Skript getötet, und hat keine Möglichkeit dein System zuzumüllen. (http://php.net/manual/de/info.configuration.php#ini.max-execution-time) Ansonsten kannst du ja deine Entwicklungs-Logs auf eine seperate Partition/Loop-Device packen, und darauf auch noch mir einer Quota arbeiten (sofern das von deiner Maschine unterstützt wird). Ich denke beide Varianten in Kombination sind am idealsten. Ich hab dazu immer wenn ich entwickle ein Terminal offen, dass ein tail -f /var/log/apache2/error-foo.com.log macht damit mir erstens kleinere Syntax-Fehler schneller auffallen, und zudem macht sich dann eine Log-Flut schnell bemerkbar.. und dann kann ich gleich von Hand das Script mit der höchsten CPU-Zeit töten. Gruß, Andre -- Andre Klärner smime.p7s Description: S/MIME cryptographic signature ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
On Sat, Dec 15, 2012 at 05:27:03PM +0100, tranquillo wrote: vielen Dank für die ganzen Vorschläge und Hinweise. Allerdings glaube ich, werd ich immer noch nicht wirklich verstanden. Ich hätte also gerne eine Lösung in der Form das die Betriebsystemkomponente die die Logfiles schreibt, vor jeder Zeile die sie schreibt schaut, sind zB. noch mindestes 30mb freier Speicher? Ja! - Ok logge das Problem ... Nein! - Email an mich: Junge, Du hast ganz andere Probleme als diese Logzeile: ... Tja, dann viel Spass beim Apache2 patchen und in Zukunft betreuen.. Besser ist du packst die Apache-Logs auf ne seperate Partition und überwach den Füllgrad dort mit OS-Mitteln, Nagios, Munin oder ähnlichem. Warum sowas nicht im Apache implementiert ist kann ich dir auch sagen: Jeder mit etwas Verstand wird nicht auf dem gefährlichen Produktiv-System neuen völlig ungetesteten Code ausführen, weil es immer sein kann, das man sich damit etwas zerschießt, vielleicht auch nur wenn man ein neues Modul installiert. Deswegen gibt es Testlandschaften, die zwar Geld und Zeit kosten, aber einem auch riesigen Stress ersparen. Demzufolge würde ich dir raten, dass du neuen Code idealerweise nicht auf dem Produktivsystem testest, sondern lieber lokal mit einer kleinen Apache/PHP-Installation. Und versuch immer zu überlegen: Was sind die Möglichkeiten das etwas schiefgeht? Was passiert wenn z.B. die Datei nicht existiert? Enthält der Dateiname Komponenten die aus einer Nutzer-Eingabe kommen? Wenn du dir solche Fragen bei jedem neuen Block stellst wird du viel weniger Fehler machen. Gruß, Andre -- Andre Klärner smime.p7s Description: S/MIME cryptographic signature ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
Moin, tranquillo sportfreund_rob...@gmx.de (Sa 15 Dez 2012 17:27:03 CET): Betriebsystemkomponente die die Logfiles schreibt, vor jeder Zeile die sie schreibt schaut, sind zB. noch mindestes 30mb freier Speicher? Ja! - Ok logge das Problem ... Nein! - Email an mich: Junge, Du hast ganz andere Probleme als diese Logzeile: ... Wenn Du partout keine eigene Partition für das Logging vorsehen möchtest, kannst Du den Apachen auch in eine Pipeline loggen lassen. Diese Pipeline kann ein von Dir geschriebener Script sein, der dann genau das tut, was Du möchtest - z.B. prüfen, ob noch genug Platz ist, und dann etwas schlaues tun, wenn keiner mehr da ist. Ich meine, das wird mit einigen wenigen Zeilen *sh oder einer fast beliebigen P-Sprache machbar sein. Best regards from Dresden/Germany Viele Grüße aus Dresden Heiko Schlittermann -- SCHLITTERMANN.de internet unix support - Heiko Schlittermann, Dipl.-Ing. (TU) - {fon,fax}: +49.351.802998{1,3} - gnupg encrypted messages are welcome --- key ID: 7CBF764A - gnupg fingerprint: 9288 F17D BBF9 9625 5ABC 285C 26A9 687E 7CBF 764A - (gnupg fingerprint: 3061 CFBF 2D88 F034 E8D2 7E92 EE4E AC98 48D0 359B)- signature.asc Description: Digital signature ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
Hi @ all, Am 15.12.2012 16:51, schrieb Andre Klärner: Moin Thomas, Gruß, Andre vielen Dank für die ganzen Vorschläge und Hinweise. Allerdings glaube ich, werd ich immer noch nicht wirklich verstanden. Wenn man entwickelt, baut man zwangsläufig viel testcode und damit potentiell schonmal viel Stuss der Fehler wirft. Das ist auch gut so, man übt bzw. versucht ja herum. Das da Fehler geworfen werden ist total in Ordnung und auch gewünscht (na klar sichere ich -jetzt- die Schleife mit einem is_dir($src) ab, nachdem klar ist das es vorkommmen kann das es den Server wegknallt wenn das nicht gemacht wird), aber ich will nicht das bei der nächsten komischen Konstellation von Code das wieder das Log voll läuft und ich wieder beim RZ anrufen muss. Ich hätte also gerne eine Lösung in der Form das die Betriebsystemkomponente die die Logfiles schreibt, vor jeder Zeile die sie schreibt schaut, sind zB. noch mindestes 30mb freier Speicher? Ja! Du könntest im logrotat ein filesize einstellen. wenn du ein paar logs aufheben willst, kannst du sie noch komprimieren. (Informationen können verloren gehen) - Ok logge das Problem ... Nein! - Email an mich: Junge, Du hast ganz andere Probleme als diese Logzeile: ... da ist doch schnell ein kleines Überwachungsscript geschrieben das schaut ob in der letzten stunde ein verzeichniss zu wächst du kannst dir auch eine quota einrichten und dich an mailen lassen wenn es zu viel wird (könntest auch einen Container mit fester Größe erstellen und in als var mounten dann sollte dir dein system nicht stehen bleiben, Informationen gehen aber an mass verloren) Andreas Viele Grüße Rob ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: php error müllt apache2 log voll
Am 15.12.2012 17:27, schrieb tranquillo: vielen Dank für die ganzen Vorschläge und Hinweise. Allerdings glaube ich, werd ich immer noch nicht wirklich verstanden. Ich glaube schon, dass die Mehrheit Dein Problem verstanden hat. Begrenzungen in logrotate/rotatelogs würde ich jedoch nicht empfehlen, da Dir dadurch möglicherweise notwendige Infos entgehen könnten. Besser wäre in Deinem Fall, wie auch schon geschrieben wurde, saubere Programmierung - meint: Fehler bereits innerhalb des Scripts abfangen. Und vor allem, wie Dir ebenfalls bereits empfohlen wurde, nicht auf dem Live-System testen, sondern eine identische lokale Installation einrichten oder gegebenenfalls einen gleichwertigen Test-Server mieten. Gruß René Thiel (Rennkuckuck) mailto:r...@rennkuckuck.de -- http://rennkuckuck.de - Die Rumänien-Seiten http://rtol.de - Dynamische Webseiten mit PHP, MySQL und CSS ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd