Hallo Lug!
Auf meinem Webserver mit Suse 8.2 ist Sendmail alle paar Stunden für ca. 5min nicht erreichbar.
PHP-Programme liefern: Warning: mail() [function.mail]: Could not execute mail delivery program in /xxx/post.php on line 18
Über SMTP werden Mails in der Zeit nicht angenommen.
Danach geht es wieder.
Thomas
On Sun, Jan 18, 2004 at 08:54:00PM +0100, Thomas Schmidt wrote:
Hallo Lug!
Auf meinem Webserver mit Suse 8.2 ist Sendmail alle paar Stunden für ca. 5min nicht erreichbar.
Über SMTP werden Mails in der Zeit nicht angenommen.
Danach geht es wieder.
schau in /var/log/{mail,messages} nach, dort wird stehen, daß die Systemlast zu hoch ist und er deswegen vorübergehend keine Mails annimmt. Man kann auch konfigurieren, ab welcher Last er bremst, aber ich weiss nicht wie. Bei SMTP müsstest du eine Fehlermeldung bekommen, die genau das besagt (temporary failure, system load too high, irgendwas in der Art)
Stefan Seyfried seife@gmane0305.slipkontur.de wrote:
On Sun, Jan 18, 2004 at 08:54:00PM +0100, Thomas Schmidt wrote:
Hallo Lug!
Auf meinem Webserver mit Suse 8.2 ist Sendmail alle paar Stunden für ca. 5min nicht erreichbar.
Über SMTP werden Mails in der Zeit nicht angenommen.
Danach geht es wieder.
schau in /var/log/{mail,messages} nach, dort wird stehen, daß die Systemlast zu hoch ist und er deswegen vorübergehend keine Mails annimmt. Man kann auch konfigurieren, ab welcher Last er bremst, aber ich weiss nicht wie. Bei SMTP müsstest du eine Fehlermeldung bekommen, die genau das besagt(temporary failure, system load too high, irgendwas in der Art)--
Wenn es an zu hoher Load liegt, dann tippe ich mal auf updatedb als Ursache (Läuft bei SuSE als Cronjob immer mal wieder). Du könntest in diesem Falle entweder den updatedb-cronjob löschen oder mit einer geringeren Priorität laufen lassen.
mfg, Fabian
On Mon, Jan 19, 2004 at 09:46:53AM +0100, Fabian Hänsel wrote:
Wenn es an zu hoher Load liegt, dann tippe ich mal auf updatedb als Ursache (Läuft bei SuSE als Cronjob immer mal wieder). Du könntest in
einmal täglich, nicht alle paar Stunden
diesem Falle entweder den updatedb-cronjob löschen oder mit einer geringeren Priorität laufen lassen.
in /etc/sysconfig/locate: RUN_UPDATEDB=no
aber ich glaube nicht, daß es an updatedb liegt. Die Defaulteinstellung von sendmail ist auch relativ niedrig, ich habe nur schon ewig keinen sendmail mehr verwendet und weiß darum auch nicht, wo da gedreht werden muss.
Als erstes würde ich versuchen herauszufinden, was die Last erzeugt.
Hallo Lug!
Am Sonntag, 18. Januar 2004 20:54 schrieb Thomas Schmidt:
Auf meinem Webserver mit Suse 8.2 ist Sendmail alle paar Stunden für ca. 5min nicht erreichbar.
Vielen Dank für Eure Hilfe! Ich habe jetzt fast drei Tage mir den Kopf zerbrochen und bin nicht viel weiter. Mittlerweile kann ich aber etwas mehr zum Fehler sagen.
Ich schrieb dieses Script: <meta http-equiv="refresh" content="30; URL=test.php"> <? mail ("mailtest@netaction.de","Betreff","Textbla"); ?> Damit wird alle 30 Sekunden eine Mail über PHP verschickt.
Es liefert alle paar _Minuten!_ und dann oft mehrmals hintereinander: Warning: mail() [function.mail]: Could not execute mail delivery program in /xxx/post.php on line 2
In meinem Postfach sehe ich jetzt genau, wann der Fehler auftrat. Dann fehlt nämlich die entsprechende Mail.
Entgegen meiner früheren Behauptung geht der Versand per SMTP (KMail) anscheinend immer.
In den Logdateien finde ich leider nichts. Die mail.log verzeichnet nur die erfolgreichen Mails.
Wenn ich top[1] laufen lasse, bemerke ich keine besondere Belastung der CPU oder des Speichers. Am meisten belasten die Besucher der Webseiten (httpd2-prefork und mysqld). Aber auch dies nicht über 2% CPU.
Thomas
[1] top Ausgabe: top - 14:48:19 up 23 days, 5:03, 1 user, load average: 0.07, 0.07, 0.05 Tasks: 28 total, 1 running, 27 sleeping, 0 stopped, 0 zombie Cpu(s): 0.1% user, 0.2% system, 0.0% nice, 99.8% idle Mem: 4005884k total, 3784404k used, 221480k free, 248620k buffers Swap: 4192956k total, 457744k used, 3735212k free, 1083660k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ Command 22941 root 17 0 980 980 808 R 0.3 0.0 0:00.11 top 1 root 0 0 248 228 208 S 0.0 0.0 0:37.31 init 22322 root 9 0 612 588 516 S 0.0 0.0 0:11.20 syslogd 22329 root 9 0 1624 1448 1372 S 0.0 0.0 0:13.62 sshd 22424 root 8 0 660 652 604 S 0.0 0.0 0:11.27 cron 28239 nobody 9 0 1516 1124 1056 S 0.0 0.0 0:13.32 proftpd 28315 root 9 0 928 864 812 S 0.0 0.0 0:00.68 xinetd 29040 root 8 0 11388 8220 8120 S 0.0 0.2 3:03.16 httpd2-prefork 32435 root 9 0 1148 944 944 S 0.0 0.0 0:00.04 safe_mysqld 32468 mysql 9 0 20316 16m 2552 S 0.0 0.4 0:11.45 mysqld 32469 mysql 9 0 20316 16m 2552 S 0.0 0.4 1:01.64 mysqld 32470 mysql 9 0 20316 16m 2552 S 0.0 0.4 1:11.12 mysqld 20452 mail 9 0 1956 1704 1604 S 0.0 0.0 0:00.01 sendmail 20453 mail 9 0 2012 1796 1656 S 0.0 0.0 0:39.12 sendmail 6918 root 10 0 2476 2048 1792 S 0.0 0.1 0:26.48 sendmail 22123 root 9 0 1304 1300 1092 S 0.0 0.0 0:09.52 pipelog.pl 2359 wwwrun 8 0 12864 9700 8344 S 0.0 0.2 0:07.42 httpd2-prefork
Hallo Lug!
In /var/log/apache2/error_log fand ich folgendes: [Mon Jan 19 14:16:57 2004] [error] (12)Cannot allocate memory: fork: Unable to fork new process [Mon Jan 19 14:17:07 2004] [error] (12)Cannot allocate memory: fork: Unable to fork new process [Mon Jan 19 14:18:38 2004] [error] (12)Cannot allocate memory: fork: Unable to fork new process
Die meisten dieser Fehler sind in der rush hour der Webseite geloggt (11h und 18-22h). 10min nach Anfang des Versuchs um 13:45 kamen nach langer Pause (seit 11h) die ersten dieser Fehler in error_log. Die ersten fehlgeschlagenen Zugriffe auf den Mailserver kamen 15min nach Anfang des Versuchs, also 5min später und wurden immer häufiger.
Der Zusammenhang zwischen diesen Fehlern scheint also da zu sein, allerdings nicht direkt etwas mit jeder einzelnen Mail zu tun zu haben.
Kann man mit dem Versenden einer Mail alle 30 Sekunden einen Server überlasten?
# free total used free shared buffers cached Mem: 4005884 3971200 34684 0 228784 575892 -/+ buffers/cache: 3166524 839360 Swap:4192956 484852 3708104
Ich habe einen vServer, teile mir also die Hardware mit 59 anderen.
Thomas
Am Montag, 19. Januar 2004 14:45 schrieb Thomas Schmidt:
Am Sonntag, 18. Januar 2004 20:54 schrieb Thomas Schmidt:
Auf meinem Webserver mit Suse 8.2 ist Sendmail alle paar Stunden für ca. 5min nicht erreichbar.
Vielen Dank für Eure Hilfe! Ich habe jetzt fast drei Tage mir den Kopf zerbrochen und bin nicht viel weiter. Mittlerweile kann ich aber etwas mehr zum Fehler sagen.
Ich schrieb dieses Script:
<meta http-equiv="refresh" content="30; URL=test.php"> <? mail ("mailtest@netaction.de","Betreff","Textbla"); ?> Damit wird alle 30 Sekunden eine Mail über PHP verschickt.
Es liefert alle paar _Minuten!_ und dann oft mehrmals hintereinander: Warning: mail() [function.mail]: Could not execute mail delivery program in /xxx/post.php on line 2
In meinem Postfach sehe ich jetzt genau, wann der Fehler auftrat. Dann fehlt nämlich die entsprechende Mail.
Entgegen meiner früheren Behauptung geht der Versand per SMTP (KMail) anscheinend immer.
Thomas Schmidt [2004-01-19, 23:19 +0100]: Hi,
(12)Cannot allocate memory: fork: Unable to fork new process
Die meisten dieser Fehler sind in der rush hour der Webseite geloggt (11h und 18-22h).
[...]
Der Zusammenhang zwischen diesen Fehlern scheint also da zu sein, allerdings
Ja.
Kann man mit dem Versenden einer Mail alle 30 Sekunden einen Server überlasten?
Ja, auch wenn das in Deinem Fall nicht passieren wird. Wie Du später schreibst, bist Du nicht der einzige.
# free total used free shared buffers cached Mem: 4005884 3971200 34684 0 228784 575892 -/+ buffers/cache: 3166524 839360 Swap:4192956 484852 3708104
Da ist nix mehr. Die Kiste müsste auch ziemlich lahm sein, da sie nur swapen wird. Gibt es da vmstat? Mache mal vmstat 5 20 zur "rush hour"
Ich habe einen vServer, teile mir also die Hardware mit 59 anderen.
Schreibe dem Admin des Servers mal. Der ist etwas "überbucht".
Gruß,
Frank
Hallo Lug!
Am Dienstag, 20. Januar 2004 08:33 schrieb Frank Becker:
Thomas Schmidt [2004-01-19, 23:19 +0100]:
(12)Cannot allocate memory: fork: Unable to fork new process Die meisten dieser Fehler sind in der rush hour der Webseite geloggt (11h und 18-22h).
Mache mal vmstat 5 20 zur "rush hour"
Eben gerade, da momentan wahrscheinlich auch viel los ist: # vmstat 5 20 procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 501144 66924 223868 855024 0 0 5 0 4 3 0 0 100 0 0 0 501144 67032 223868 855024 0 0 0 9 157 1509 0 0 100 0 0 0 501144 68348 223868 855028 0 0 0 35 165 1460 0 0 100 0 0 0 501144 65780 223868 855036 0 0 0 15 167 1604 0 0 100 0 0 0 501144 68264 223868 855056 0 0 0 31 194 1587 0 0 100 0 0 0 501144 66432 223868 855064 0 0 0 15 186 1645 0 0 100 0 0 0 501144 64996 223876 855120 0 0 0 74 232 1560 0 0 100 0 0 0 501144 64592 223876 855120 0 0 0 27 176 1589 0 0 100 0 0 0 501144 65148 223880 855116 0 0 0 33 162 1501 0 0 100 0 0 0 501144 62068 223880 855116 0 0 0 28 182 1530 0 0 100 0 0 0 501144 62212 223888 855132 0 0 0 20 185 1662 0 0 100 0 0 0 501144 58868 223888 855144 0 0 0 43 194 1618 0 0 100 0 0 0 501144 59764 223892 855152 0 0 0 86 203 1691 0 0 100 0 0 0 501144 59116 223892 855160 0 0 0 30 206 1687 0 0 100 0 0 0 501144 60952 223892 855160 0 0 0 48 183 1519 0 0 100 0 0 0 501144 60476 223892 855164 0 0 0 10 140 1435 0 0 100 0 0 0 501144 60804 223892 855476 0 0 35 27 252 1602 0 0 99 0 0 0 501144 61956 223892 855476 0 0 0 1 122 1410 0 0 100 0 0 0 501144 63116 223892 855476 0 0 0 4 148 1427 0 0 100 0 0 0 501144 57840 223892 855472 0 0 0 34 207 1555 0 0 100 0
Thomas
On Tue, Jan 20, 2004 at 08:33:11AM +0100, Frank Becker wrote:
Thomas Schmidt [2004-01-19, 23:19 +0100]: Hi,
(12)Cannot allocate memory: fork: Unable to fork new process
das ist wohl das Problem. Du müsstest mal schauen, wieviele Prozesse auf der Maschine um diese Zeit laufen, evtl. hast du auch nur ein limit deiner UIDs erreicht. Der Speicher ist definitiv nicht voll (siehe unten).
Kann man mit dem Versenden einer Mail alle 30 Sekunden einen Server überlasten?
eigentlich nicht, es sei denn sie ist schrecklich groß. Zumindest mit Postfix oder qmail ist es problemlos möglich > 60000 Mails pro Stunde von einer Maschine zu versenden, ich habe sowas schon administriert.
# free
ich habe mal die Ausgabe korrigiert. Da ging was mit den Leerzeichen schief.
total used free shared buffers cached
Mem: 4005884 3971200 34684 0 228784 575892 -/+ buffers/cache: 3166524 839360 Swap:4192956 484852 3708104
Da ist nix mehr. Die Kiste müsste auch ziemlich lahm sein, da sie nur
es sind >800MB frei, das ist nicht das Problem, es sind <500MB im Swap, das ist vermutlich auch nicht das Problem.
swapen wird. Gibt es da vmstat? Mache mal vmstat 5 20 zur "rush hour"
das Kann nicht schaden, wird uns aber das Problem nicht zeigen, da es kein Hardwareproblem (Platten, Speicher, etc.) sein wird.
Ich habe einen vServer, teile mir also die Hardware mit 59 anderen.
Die Frage ist, was machen die anderen darauf. Ich habe keine Ahnung wie diese Vserver konfiguriert sind, ist das ein UML für jeden oder ist das einfach ein Server mit shellzugriff aber ohne root, so daß halt alles unter deiner UID läuft?
Schreibe dem Admin des Servers mal. Der ist etwas "überbucht".
da wäre ich mir nicht sicher, es sieht bisher alles noch grün aus.
Stefan Seyfried [2004-01-20, 12:14 +0100]:
Hi,
total used free shared buffers cached
Mem: 4005884 3971200 34684 0 228784 575892 -/+ buffers/cache: 3166524 839360 Swap:4192956 484852 3708104
Da ist nix mehr. Die Kiste müsste auch ziemlich lahm sein, da sie nur
es sind >800MB frei, das ist nicht das Problem, es sind <500MB im Swap, das ist vermutlich auch nicht das Problem.
Sorry, hab mich verlesen, used mit total vertauscht.
swapen wird. Gibt es da vmstat? Mache mal vmstat 5 20 zur "rush hour"
das Kann nicht schaden, wird uns aber das Problem nicht zeigen, da es kein Hardwareproblem (Platten, Speicher, etc.) sein wird.
Ich war davon ausgegangen, dass kein Speicher mehr da ist.
Ich habe einen vServer, teile mir also die Hardware mit 59 anderen.
Die Frage ist, was machen die anderen darauf. Ich habe keine Ahnung wie diese Vserver konfiguriert sind, ist das ein UML für jeden oder ist das einfach ein Server mit shellzugriff aber ohne root, so daß halt alles unter deiner UID läuft?
Schreibe dem Admin des Servers mal. Der ist etwas "überbucht".
da wäre ich mir nicht sicher, es sieht bisher alles noch grün aus.
Auch das war ein falscher Schluss von mir.
Gruß,
Frank
Hallo Lug!
Vielen Dank für Eure Antworten. Sie halfen mir, das Problem näher einzukreisen.
Auf meinem vServer mit Suse 8.2 kann ich mich wie jeder der 59 anderen Kunden als root einloggen und selbständig an allen Programmen herumschrauben.
Vom Support erfuhr ich gerade, daß ich 80 Prozesse und 200MB Ram verbrauchen dürfte.
Gerade passierte mir folgendes:
************************************************************************ v5104:~ # top -bash: fork: Cannot allocate memory v5104:~ # top -bash: fork: Cannot allocate memory v5104:~ # top -bash: fork: Cannot allocate memory v5104:~ # top -bash: fork: Cannot allocate memory v5104:~ # free -bash: fork: Cannot allocate memory v5104:~ # free total used free shared buffers cached Mem: 4005884 3890688 115196 0 242412 752600 -/+ buffers/cache: 2895676 1110208 Swap: 4192956 511092 3681864 v5104:~ # top
top - 17:13:58 up 24 days, 7:29, 1 user, load average: 0.04, 0.02, 0.00 Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie Cpu(s): 0.1% user, 0.2% system, 0.0% nice, 99.7% idle Mem: 4005884k total, 3887192k used, 118692k free, 242424k buffers Swap: 4192956k total, 511092k used, 3681864k free, 753804k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ Command 7457 root 14 0 976 976 800 R 0.7 0.0 0:00.39 top 7210 root 9 0 2348 2280 1884 S 0.3 0.1 0:00.09 sshd 1 root 9 0 248 228 208 S 0.0 0.0 0:39.86 init 22322 root 9 0 612 588 516 S 0.0 0.0 0:12.44 syslogd 22329 root 9 0 1624 1448 1372 S 0.0 0.0 0:15.16 sshd 22424 root 8 0 660 652 604 S 0.0 0.0 0:11.95 cron 28239 nobody 9 0 1516 1116 1048 S 0.0 0.0 0:14.09 proftpd 28315 root 9 0 928 844 792 S 0.0 0.0 0:01.11 xinetd 29040 root 8 0 11388 8220 8104 S 0.0 0.2 3:12.32 httpd2-prefork 32435 root 9 0 1148 944 944 S 0.0 0.0 0:00.04 safe_mysqld 32468 mysql 9 0 20328 16m 2552 S 0.0 0.4 0:12.39 mysqld 32469 mysql 6 0 20328 16m 2552 S 0.0 0.4 1:06.08 mysqld 32470 mysql 9 0 20328 16m 2552 S 0.0 0.4 1:18.21 mysqld 20452 mail 9 0 1956 1704 1604 S 0.0 0.0 0:00.01 sendmail 20453 mail 10 0 2012 1796 1656 S 0.0 0.0 0:46.42 sendmail 6918 root 10 0 2488 2064 1804 S 0.0 0.1 0:35.99 sendmail 22123 root 9 0 1304 1300 1092 S 0.0 0.0 0:20.23 pipelog.pl 3687 mysql 9 0 20328 16m 2552 S 0.0 0.4 0:00.02 mysqld 17857 wwwrun 9 0 13128 9964 8356 S 0.0 0.2 0:03.70 httpd2-prefork 18949 wwwrun 9 0 13116 9952 8336 S 0.0 0.2 0:03.60 httpd2-prefork 21484 wwwrun 9 0 13160 9996 8332 S 0.0 0.2 0:02.34 httpd2-prefork 28475 wwwrun 9 0 12868 9704 8348 S 0.0 0.2 0:02.70 httpd2-prefork 29470 wwwrun 9 0 13196 9.8m 8360 S 0.0 0.3 0:02.22 httpd2-prefork 29474 wwwrun 9 0 13060 9896 8352 S 0.0 0.2 0:01.01 httpd2-prefork 31787 wwwrun 10 0 13028 9864 8360 S 0.0 0.2 0:01.62 httpd2-prefork 31790 wwwrun 9 0 12992 9828 8368 S 0.0 0.2 0:01.81 httpd2-prefork 1270 wwwrun 9 0 13060 9896 8344 S 0.0 0.2 0:00.30 httpd2-prefork 7178 wwwrun 9 0 11484 8320 8164 S 0.0 0.2 0:00.00 httpd2-prefork 7221 root 9 0 1656 1656 1228 S 0.0 0.0 0:00.06 bash ************************************************************************
Die 29 Tasks kommen den erlaubten 80 anscheinend nicht ins Gehege.
Wenn ich die Zahlen unter "RES" als KB addiere und die Zahlen mit "m" als MB rechne, komme ich auf 187MB, also knapp unter den erlaubten 200MB.
Folgere ich richtig, daß mein System in der momentanen Konfiguration nicht mit 200MB auskommt? Warum braucht der mysqld 64MB? Die ganze Datenbank hat insgesamt schließlich nur 2MB. mysql und httpd2 schlucken alleine anscheinend schon 160MB!?
Thomas
Am 20. Januar 2004 schrieb Thomas Schmidt:
Warum braucht der mysqld 64MB?
Lass mal memstat laufen.
Torsten
lug-dd@mailman.schlittermann.de