Apache Seg Fehler (11)

8

Ich habe dies in meinem apace error.log:

[Fri Sep 18 08:10:54 2009] [Hinweis] Child Pid 9178 Ausgangssignal Segmentierungsfehler (11)
[Fri Sep 18 08:11:41 2009] [Hinweis] Child Pid 9187 Exit Signal Segmentierungsfehler (11)
[Fr. 18. September 08:12:12 2009] [Hinweis] Child Pid 9204 Ausgangssignal Segmentierungsfehler (11)
[Fr 18. September 08:12:13 2009] [Hinweis] Child Pid 9202 Ausgangssignal Segmentierungsfehler (11)
[Fr 18. September 08:14:45 2009] [Hinweis] Child PID 9251 Exit Signal Segmentierungsfehler (11)

Es begann am selben Tag, an dem ich die Datei vhost.conf erweitert habe. Also kehrte ich zur ursprünglichen Datei zurück und führte einen Neustart von apache2ctl durch. Leider tritt es immer noch auf.

Apache scheint Seiten in Ordnung zu bringen.

Irgendwelche Ideen?

Prost,

Nathan.

Nathan Freund
quelle

Antworten:

5

Nathan, versuchen Sie, Apache zu stoppen und im Vordergrund zu starten (Debug, ohne Thread), damit möglicherweise mehr Hinweise darauf verloren gehen, was es zu einem Segfault macht.

Trotzdem sollte es keinen Segfault geben, es ist also ein Fehler, aber es kann etwas sein, das Sie beheben können, wenn Sie wissen, was es verursacht.

apache2 -X

Auch (es ist unwahrscheinlich, dass der gesamte Grund für dieses Problem bekannt gegeben wird), Warnungen / Fehler von ...

 apache2ctl -t

...?

Schließlich sind alle Module, die Sie in Apache geladen haben, "zertifiziert". Vielleicht können Sie etwa die Hälfte davon kommentieren und prüfen, ob das Problem verschwindet oder nicht, und von dort aus eine binäre Suche zum Teilen und Erobern fortsetzen.

Sie könnten auch nach Core-Dumps suchen, die aus dem Segfault erstellt wurden, vielleicht in / tmp? Wenn Sie welche finden, versuchen Sie es durch gdb ...

gdb apache2 -c /tmp/core.<pid>
Xerxes
quelle
Meistens ein guter Rat, aber ich würde nicht sagen, dass es sich um einen Apache-Fehler handelt, es sei denn, Sie haben Dinge wie die Verwendung der falschen MPM oder eines fehlerhaften Drittanbieter-Moduls ausgeschlossen. Oder Berechtigungen für Dateien, wenn Threads als anderer Benutzer oder ähnliches ausgeführt werden. Viele Dinge, die man wirklich untersuchen muss. Aber ja, beginnen Sie mit den Debug-Protokollen. ps: deshalb ist es gut, die Konfiguration von Apache unter Versionskontrolle zu haben;)
Lee B
Die Syntaxprüfung ist wieder in Ordnung. Ich möchte es nicht wirklich im Debug-Modus während der Kernstunden neu starten. Ich werde es heute Abend versuchen, wenn die Server weniger ausgelastet sind. Vielen Dank für Ihre bisherigen Vorschläge.
Nathan Friend
Ich habe gerade gelesen, was ich geschrieben habe - und ich stimme Lee zu -, ich würde nicht sagen, dass es sich um einen Apache-Fehler handelt. Ich hätte klarstellen müssen, dass der Fehler mit ziemlicher Sicherheit einem der geladenen Apache-Module von Drittanbietern gehört und nicht Apache selbst. :)
Xerxes
5

Sig11 treten normalerweise nur aus einem von zwei Gründen auf:

  • Schlechte Programme.

    Im Fall von Apache ist es statistisch gesehen unwahrscheinlich, dass ein Fehler im Apache-Kerncode vorliegt.

    Es ist viel häufiger, ein Fehler eines Moduls zu sein. Entweder so, wie ein Modul sicher mit Ausnahmen im Code oder den Bibliotheken umgeht, die es verarbeitet. Oder die Art und Weise, wie es mit dem von Apache gewählten MPM-Modell interagiert. Wenn sich ein Modul auf diese Weise schlecht verhält, wird es unkontrolliert beendet, bevor Daten an den untergeordneten Apache-Prozess zurückgegeben werden, und erzeugt somit den Segfault.

    Überprüfen Sie alle Änderungen, die Sie seit dem letzten Funktionieren vorgenommen haben. Wie Lee B sagt, ist dies das perfekte Beispiel für die Verwendung der Versionskontrolle.

    Um die Sache etwas komplizierter zu machen, können Sie häufig dasselbe Verhalten erzeugen, indem Sie gracefulnach Änderungen am Apache-Modul-Setup einen statt eines vollständigen Neustarts durchführen. Sie können dies ausschließen, indem Sie Apache stoppen und starten.

  • Schlechte Hardware.

    Wenn Sie sicher sind, dass die Fehler mit Ihrer Konfigurationsänderung zusammenfallen und Sie keine weiteren negativen Auswirkungen auf das System feststellen, können Sie dies wahrscheinlich ausschließen. Aber es kann sich lohnen, daran zu denken, wenn Ihnen andere Wege ausgehen. CPUs und RAM sind die typischen Schuldigen.

Dan Carley
quelle
Ich habe diesen Fehler auch auf einem System mit unzureichendem freien Swap-Speicher beobachtet. Es gab auch andere Prozesse im Systemprotokoll, die fehlerhaft waren und sich über unzureichenden freien Swap-Speicher beschwerten.
versuchen-fangen-endlich
3

Endlich wurde das behoben. Ein einfacher Neustart des Servers stoppte die Seg-Fehler.

Danke für deine Antworten. Ich bin mir sicher, dass dies nützlich ist, um zukünftige Probleme zu diagnostizieren.

Nathan.

Nathan Freund
quelle
1

Ich nehme an, es könnte ein geladenes Modul sein, das ein Problem hat.

Ich habe das gleiche Verhalten mit PHP und der gettext php-Erweiterung erlebt, es hat PHP zum Absturz gebracht und daher das Kind des Apachen, das die Anfrage bedient.

drAlberT
quelle
1

Nachdem ich stundenlang versucht hatte, die Ursache für meinen eigenen Segmentierungsfehler herauszufinden, begann ich, Dinge nach dem Zufallsprinzip zu deaktivieren. In meinem Fall war die Fehlerursache Zends Beschleuniger.

Da ich diese Erweiterung nicht benötige, lasse ich sie deaktiviert. Wenn Sie das gleiche Problem haben und diese Erweiterung benötigen, können Sie versuchen, den eaccelerator-Cache zu löschen und httpd neu zu starten.


quelle