何が起こったのかわかりませんが、ユーザーがphpBBフォーラムの1つに自分自身を登録しようとすると、nginxは502 Bad gateway
をスローしますが、OPcacheを無効にするとすべてが正常に機能します。
これはphp-fpm
からのエラーログです。
WARNING: [pool www] child 14677 exited on signal 11 (SIGSEGV) after 87782.968736 seconds from start
そして、これはnginx
エラーログです。
[error] 14099#0: *78984 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: x.x.x.x, server: x, request: "POST /ucp.php?mode=register HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", Host: "x.tld", referrer: "https://x.tld/ucp.php?mode=register"
Pagespeedは、すべてのホストとワニスで有効になっています。
Vhost構成:
[...]
# PageSpeed
pagespeed on;
pagespeed MemcachedThreads 1;
pagespeed MemcachedServers "localhost:11211";
#Varnish
pagespeed DownstreamCachePurgeLocationPrefix https://x.tld:80;
pagespeed DownstreamCachePurgeMethod PURGE;
pagespeed DownstreamCacheRewrittenPercentageThreshold 95;
pagespeed EnableFilters combine_javascript;
pagespeed EnableFilters combine_css;
pagespeed EnableFilters move_css_above_scripts;
pagespeed EnableFilters prioritize_critical_css;
pagespeed FileCachePath "/var/cache/pagespeed/";
pagespeed MapRewriteDomain https://x.tld http://x.tld;
[...]
location ~ \.php$ {
include fastcgi_params;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
}
OPcache構成:
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=30000
opcache.max_wasted_percentage=5
opcache.use_cwd=1
opcache.validate_timestamps=1
opcache.revalidate_freq=1
opcache.fast_shutdown=1
opcache.optimization_level=0
フォーラムディレクトリ全体をブラックリストに登録しようとしましたが、OPcacheを完全に無効にした場合にのみ機能します
編集:
PHP 5.6.5-1~dotdeb.1
Debian GNU/Linux 7.8
でVarnish 4.0.2
を使用する
Edit2:
pagespeed
を無効にして、xcache
nginxが503
を報告し、php-fpm worker
が再起動します。
phpでキャッシュを完全に無効にした場合にのみ機能します
Edit3:
Jakov Sosicが提案したようにコアダンプを作成した後、これは結果です。
[Thread debugging using libthread_db enabled]
Using Host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `php-fpm: pool www '.
Program terminated with signal 11, Segmentation fault.
#0 _zend_mm_free_int (heap=0xf122c0, p=0x7f895b07c980) at /usr/src/php5.6/nonzts/source/dotdeb-php5/Zend/zend_alloc.c:2104
2104 /usr/src/php5.6/nonzts/source/dotdeb-php5/Zend/zend_alloc.c: No such file or directory.
問題を調べたところ、opcache
エラーはファイルの欠落が原因で発生したことがわかりましたが、それは問題ではありませんでした。
私のphpバージョンはzend thread safety
機能なしでインストールされました。 ztsを使用してphpをインストールした後、すべてが正常に機能しています。
この問題に取り組む1つの方法は、PHP(segfaultsの後)のコアダンプをフェッチしてから、GDB(システムにdebuginfoパッケージがインストールされている)でコアダンプを分析することです。正確なphp行があなたに頭痛を与えているのを見てください。
それ以外は、これについてアドバイスできる人はあまりいません。
http://www.omh.cc/blog/2008/mar/6/fixing-Apache-segmentation-faults-caused-php/