Ankündigung

Einklappen
Keine Ankündigung bisher.

php-fpm Segmentation Fault - Wie debugge ich das?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • php-fpm Segmentation Fault - Wie debugge ich das?

    Hi zusammen,

    ich habe ein Problem. Ich habe einen root Server, den ich als Webserver verwende. Dort betreibe ich eine eigene Website, die mir von einem Webseitenentwickler gebaut wurde.

    Seit Inbetriebnahme bekomme ich immer sehr häufig HTTP 500 Internal Errors. Wenn ich in das /var/log/kern.log schaue, dann finde ich da heraus, dass PHP der Übeltäter ist:

    Feb 8 13:25:35 menkisyscloudsrv29 kernel: [2503817.675953] php5-fpm[20186]: segfault at 20 ip 00000000006894aa sp 00007fffe75e49a0 error 6 in php5-fpm[400000+75a000]
    Feb 8 13:25:38 menkisyscloudsrv29 kernel: [2503820.774949] php5-fpm[20187]: segfault at 20 ip 00000000006894aa sp 00007fffe75e49a0 error 6 in php5-fpm[400000+75a000]
    Feb 8 13:25:41 menkisyscloudsrv29 kernel: [2503823.612452] php5-fpm[20188]: segfault at 20 ip 00000000006894aa sp 00007fffe75e49a0 error 6 in php5-fpm[400000+75a000]
    /var/log/kern.log (END)

    Ich kenne mich kein bisschen mit PHP aus. Mein Entwickler stellt sich stur und hilft mir nicht und sagt, dass das nicht von seinen PHP Skripten kommt. Mein Hoster, der mir den root Server zur Verfügung stellt, ist sich auch zu fein, mir zu helfen.

    Da ich keine Idee habe, wie ich wo ansetze, rufe ich euch zur Hilfe. Was muss ich tun, um PHP in einer Art verbose/debug Mode zu starten, der mir dann in einer Logdatei schreibt, welches PHP Skript in welcher Zeile den Fehler verursacht?

    Es läuft Wordpress 4.1 mit Plugins sowie einigen von meinem Entwickler geschriebenen Skripte.

    Unten findet ihr die PHP Randdaten. Sagt mir bitte Bescheid, wenn ihr noch mehr Informationen braucht.

    Danke!!!

    php -i
    PHP Warning: Module 'mysqlnd' already loaded in Unknown on line 0
    PHP Warning: Module 'PDO' already loaded in Unknown on line 0
    phpinfo()
    PHP Version => 5.4.36-0+deb7u1

    System => Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.63-2+deb7u2 x86_64
    Build Date => Dec 31 2014 07:30:15
    Server API => Command Line Interface
    Virtual Directory Support => disabled
    Configuration File (php.ini) Path => /etc/php5/cli
    Loaded Configuration File => /etc/php5/cli/php.ini
    Scan this dir for additional .ini files => /etc/php5/cli/conf.d
    Additional .ini files parsed => /etc/php5/cli/conf.d/10-mysqlnd.ini,
    /etc/php5/cli/conf.d/10-pdo.ini,
    /etc/php5/cli/conf.d/20-apc.ini,
    /etc/php5/cli/conf.d/20-gd.ini,
    /etc/php5/cli/conf.d/20-imap.ini,
    /etc/php5/cli/conf.d/20-intl.ini,
    /etc/php5/cli/conf.d/20-mcrypt.ini,
    /etc/php5/cli/conf.d/20-mysql.ini,
    /etc/php5/cli/conf.d/20-mysqli.ini,
    /etc/php5/cli/conf.d/20-mysqlnd.ini,
    /etc/php5/cli/conf.d/20-pdo.ini,
    /etc/php5/cli/conf.d/20-pdo_mysql.ini

    PHP API => 20100412
    PHP Extension => 20100525
    Zend Extension => 220100525
    Zend Extension Build => API220100525,NTS
    PHP Extension Build => API20100525,NTS
    Debug Build => no
    Thread Safety => disabled
    Zend Signal Handling => disabled
    Zend Memory Manager => enabled
    Zend Multibyte Support => provided by mbstring
    IPv6 Support => enabled
    DTrace Support => disabled


  • #2
    Zitat von TheRiddler1982 Beitrag anzeigen
    Mein Entwickler stellt sich stur und hilft mir nicht und sagt, dass das nicht von seinen PHP Skripten kommt.
    Ist auch richtig so, nicht sein Fehler.

    Zitat von TheRiddler1982 Beitrag anzeigen
    Mein Hoster, der mir den root Server zur Verfügung stellt, ist sich auch zu fein, mir zu helfen.
    Auch richtig so, nicht seine Aufgabe.

    Wird wohl ein Bug in php-fpm sein. Update mal.
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Hi,

      danke für die Antwort.

      Ich habe jetzt mal von PHP 5.4 auf PHP 5.6 aktualisiert. Wie kann ich denn überprüfen, ob fpm mit berücksichtigt wurde? Was ist der aktuelle php-fpm built?

      Zu den Aufgaben :

      Ich habe einen Wartungsvertrag mit meinem Hoster, der Patches eingespielt und aufräumen soll. Hier erwarte ich auch, dass er mir für das Geld, das ich bezahle, auch Support mit Logfile-Auswertung gibt oder mir zumindest ein paar Tipps gibt. Das einzige, was mein Hoster gesagt hat, ist, dass mein Eintwickler sich nicht an PHP-Entwicklungsrichtlinien gehalten hat. Wenn man diese richtig anwendet, dann kommt es nicht zu den Segmentation Faults.

      Jetzt wollte ich halt herausfinden, welches PHP Skript der Übeltäter ist. Wenn das alles nur ein Bug ist, umso besser.

      Kommentar


      • #4
        Zitat von TheRiddler1982 Beitrag anzeigen
        Wie kann ich denn überprüfen, ob fpm mit berücksichtigt wurde? Was ist der aktuelle php-fpm built?
        Mit

        Code:
        $ php-fpm -v
        Zitat von TheRiddler1982 Beitrag anzeigen
        Jetzt wollte ich halt herausfinden, welches PHP Skript der Übeltäter ist.
        Genau hier könnte dich dein Entwickler unterstützen, um zu erkennen, welches Script zu diesem Problem führt.

        Wenn das Problem nach dem Update von PHP immer noch auftritt, schau mal in die errorlog von PHP oder vom Webserver ob hier noch weitere Informationen vorhanden sind, woher das Problem kommen könnte.

        Ich vermute hier ja mal wieder den [MAN]APC[/MAN], der bei mir immer wieder (auch erst nach längerer Laufzeit) zu Problemen geführt hat. Wenn der APC für deine Script nicht notwendig ist, so deaktiviere diese Erweiterung mal testweise und prüfe ob das Problem dann immer noch auftritt.

        Sollten keine Probleme mehr auftreten so kannst du danach den [MAN]OPCache[/MAN] verwenden

        Kommentar


        • #5
          Hi,

          danke

          Also die wurde auch aktualisiert:

          PHP 5.6.5-1~dotdeb.1 (fpm-fcgi) (built: Jan 28 2015 06:01:25)
          Copyright (c) 1997-2014 The PHP Group
          Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
          with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies


          Ich habe mal den Entwickler nach der Verwendung von APC gefragt, warte auf Antwort. Er sieht leider nicht ein, dass das Problem bei ihm liegt.

          Verstehe ich OPCache richtig, dass ich damit die Skripte "pre-"compilen kann? Das würde dann den Segmentation Fault triggern. Dann wüsste ich, welches Skript das Problemkind ist. Oder?

          /var/log/apache2/error.log zeigt nichts mit dem Fehler an.

          Globales PHP Logging war ausgeschalten. Habe das nun aktiviert

          php5-fpm Logging ist aktiv. Hier steht zum Zeitpunkt des Error 500 folgendes drinnen:


          [08-Feb-2015 13:25:35] WARNING: [pool ....de] child 20186 exited on signal 11 (SIGSEGV) after 11.453704 seconds from start
          [08-Feb-2015 13:25:35] NOTICE: [pool ....de] child 20187 started
          [08-Feb-2015 13:25:38] WARNING: [pool ....de] child 20187 exited on signal 11 (SIGSEGV) after 3.090205 seconds from start
          [08-Feb-2015 13:25:38] NOTICE: [pool ....de] child 20188 started
          [08-Feb-2015 13:25:41] WARNING: [pool ....de] child 20188 exited on signal 11 (SIGSEGV) after 2.836540 seconds from start
          [08-Feb-2015 13:25:41] NOTICE: [pool ....de] child 20189 started

          Hilft das mir weiter, mehr über das PHP Skript herauszufinden? Kann man das fpm Log anreichern mit Informationen?

          Danke nochmal für die Hilfe!

          Kommentar


          • #6
            ggf. kannst du das Problem nachvollziehen, wenn du via strace (apt-get install strace) den entsprechenden PHP-Prozess untersuchst ...

            Code:
            ps aux | grep php-fpm
            Code:
            strace -p <PID>

            Kommentar

            Lädt...
            X