Kusanagi9におけるopcacheの動作について

TOP Forums バグ報告と提案(Requests and Feedback) Kusanagi9におけるopcacheの動作について

Kusanagi9におけるopcacheの動作について

Viewing 1 reply thread
  • Author
    Posts
    • #1011
      sasagar
      Participant

        さくらのクラウドにおけるKusanagi9について、PHP-FPMプロセスがSegmentation Faultでダウンし、
        子プロセスが再起動するモノの、引き続きSegmentation Faultとなりアクセスがある度に再起動を繰り返す状態になった上で、
        あるタイミングで親プロセスが再起動するという状況になりました。

        最終的にopcacheを切る様に設定を変えたところエラーが起こらなくなった次第です。
        Kusanagiの標準ではオンになっている(そしてその状態のままでエラーが発生していた)ということで、切ってしまって問題ないのかが不安なところがありますのでご相談させて頂きます。

        1回Segmentation Faultが発生すると、親プロセスの再起動までは502エラーとなり、

        `
        [19-Aug-2022 03:34:42] WARNING: [pool www] child 101694 exited on signal 11 (SIGSEGV – core dumped) after 36.740704 seconds from start
        [19-Aug-2022 03:34:42] NOTICE: [pool www] child 101716 started
        `

        のようなエラーを連発します。
        親プロセスの再起動時には

        `
        [19-Aug-2022 03:39:06] NOTICE: Terminating …
        [19-Aug-2022 03:39:06] NOTICE: exiting, bye-bye!
        [19-Aug-2022 03:39:06] NOTICE: fpm is running, pid 101969
        [19-Aug-2022 03:39:06] NOTICE: ready to handle connections
        [19-Aug-2022 03:43:45] NOTICE: Terminating …
        [19-Aug-2022 03:43:45] NOTICE: exiting, bye-bye!
        [19-Aug-2022 03:43:45] NOTICE: fpm is running, pid 102065
        [19-Aug-2022 03:43:45] NOTICE: ready to handle connections
        `

        のような形で再起動する次第です。

        Coredumpを取るようにした結果、opcacheが原因らしいことが判明し、使わないようにphp.iniなどを書き換えました。
        気になっているのはこれ自体がKusanagiの動作に影響しないのかと言う点と、エラーが出ている状態がデフォルトで大丈夫だったのかと言う点です。

        最終的にはPHP側の問題として
        https://github.com/php/php-src/issues/8149
        にたどり着きます。現段階でOpenなIssueであることを踏まえて、対応策はないのかな?と思いつつ、
        意図的にKusanagiでオンになっている機能だと問題だなと思っている次第です。

        似たような内容で

        KUSANAGI9にてphp-fpmが落ちる


        こちらのトピックにも行き当たりましたが、特段問題はありませんでした。

        以下現在の kusanagi status です。

        `
        KUSANAGI Version 9.2.6-2.el8
        sakura

        *** (active) nginx : nginx123 ***
        * nginx.service – The NGINX HTTP and reverse proxy server
        Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
        Active: active (running) since Fri 2022-08-19 17:00:10 JST; 2h 3min ago

        *** (inactive) httpd : httpd ***
        * httpd.service – The Apache HTTP Server
        Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
        Active: inactive (dead)

        *** (active) php : php80
        kusanagi-php80-debuginfo.x86_64 8.0.22-2.el8 @kusanagi
        kusanagi-php80-debugsource.x86_64 8.0.22-2.el8 @kusanagi ***
        * php-fpm.service – The PHP FastCGI Process Manager
        Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
        Active: active (running) since Fri 2022-08-19 17:02:45 JST; 2h 0min ago

        *** (active) mariadb : mariadb10.5 ***
        * mariadb.service – MariaDB 10.5.17 database server
        Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
        Active: active (running) since Fri 2022-08-19 16:49:58 JST; 2h 13min ago

        *** (inactive) psql : ***

        *** (inactive) pgpool-II : ***

        *** python ***
        Python 3.9.13

        *** ruby ***
        ruby is not installed.

        *** Cache status ***

        *** WAF ***
        off

        *** SELinux ***
        off (permanent)

        status completed.
        `

        何か情報を頂けたら幸いです。
        よろしくお願いいたします。

      • #1012
        cloudy
        Participant

          sasagar さん、こんにちは。

          KUSANAGI 9、PHP 8.0 ですね。
          頂いた情報を知見のあるものに確認してもらい、助言をいただきました。

          KUSANAGI では opcache を無効にするより、JIT のオプションを変更することを推奨します。
          あるいは JIT を無効にすることを推奨します。

          JIT オプションの変更例 PHP8.0
          opcache.jit=1255

          これまでの実績で WordPress では opcache に比べて JIT の効果が薄いようです。
          opcache を無効にすることによるパフォーマンス低下の方が JIT を無効にすることによるパフォーマンス向上を上回ります。

          [参考記事]

          JIT segmentation fault in PHP 8.1 #7817
          https://github.com/php/php-src/issues/7817#issuecomment-1084708354

          PHP 8: How to setup the JIT
          https://stitcher.io/blog/php-8-jit-setup

          PHP 公式ドキュメント: 実行時設定
          https://www.php.net/manual/ja/opcache.configuration.php#ini.opcache.jit

          • This reply was modified 1 year, 9 months ago by cloudy.
      Viewing 1 reply thread
      • You must be logged in to reply to this topic.

      Next article

      フォーラムについて