私のphp-fpm設定に問題があります。多分あなた達は私を正しい方向に向けることができます。まず、すべてが正常に機能しています。しかし、時々、503エラーが発生します。 Webサイトをリロードすると、これらのエラーは消えます。それらはphpサイトにのみ表示され、1つのドメインまたは1つのフレームワークに分離されていません。 PHPmyAdmin、WordpressおよびTypo3で503エラーが表示されます。これらは私がテストした3つのサイトです。これらは別々のvhostsにあり、異なるphp-fpmプールがありますが、同じphpを共有しています-fpmマスタープロセス。
私が実行しているサーバーは、Apache 2.4(MPM-Event Workers)で、mod_phpまたはcgi/fastcgiがありません。代わりに、mod_proxyとmod_proxy_fcgiを使用して、すべての.phpファイルをphp-fpmプロセスに渡します。注意すべき点の1つは、サーバーはまだ稼働していないため、トラフィックがほとんどないかまったくないことです。サーバーハードウェアは強力で、12 VCoreと32 GB RAMです。
私のmod_proxyとmod_proxy_fcgiの設定はデフォルトです-何も変更していません。
私のvhost設定(プロキシ部分):
<FilesMatch "\.php$">
SetHandler "proxy:unix:///opt/php-5.6.11/var/run/php5-fpm-mywebsite.sock|fcgi://mywebsite/"
</FilesMatch>
<Proxy fcgi://mywebsite/ enablereuse=on retry=0>
</Proxy>
注:以前にProxyディレクティブでmax = 10を使用したことがあり、503エラーをより頻繁に生成するようです。 max = 10を削除したので、発生が少ないようです。偶然かもしれません。
私のPHP-FPMプール構成(関連する部分):
listen = var/run/php5-fpm-mywebsite.sock
listen.owner = mywebsite
listen.group = www-data
listen.mode = 0660
listen.backlog = 65535
user = mywebsite
group = www-data
listen.allowed_clients = 127.0.0.1
pm = ondemand
pm.max_children = 20
pm.process_idle_timeout = 15s
request_terminate_timeout = 300s
rlimit_files = 131072
rlimit_core = unlimited
catch_workers_output = no
My PHP-FPM Config(関連する部分):
emergency_restart_threshold = 10
emergency_restart_interval = 1m
process_control_timeout = 10
events.mechanism = epoll
PHP-FPMマスタープロセス用の私のPHP.ini。ここにリストされていないものはすべて、デフォルトのphp設定であるか、関連性がないはずです。
memory_limit = 400M
upload_max_filesize = 20M
post_max_size = 20M
max_execution_time = 600
max_input_time = -1
max_input_vars = 10000
suhosin.get.max_vars = 10000
suhosin.post.max_vars = 10000
[Zend]
zend_extension=/opt/php-5.6.11/lib/php/extensions/no-debug-non-zts-20131226/ioncube.so
zend_extension=opcache.so
opcache.revalidate_freq=0
;opcache.validate_timestamps=0
opcache.max_accelerated_files=50000
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.fast_shutdown=1
[APC]
extension=apcu.so
apc.enabled=1
apc.shm_segments = 1
apc.shm_size=256M
apc.ttl=7200
apc.user_ttl=7200
apc.gc_ttl=3600
apc.stat=1
apc.enable_cli=0
apc.file_update_protection=2
apc.max_file_size=2M
apc.include_once_override=0
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.cache_by_default=1
apc.use_request_time=1
apc.slam_defense=0
apc.stat_ctime=0
apc.canonicalize=1
apc.write_lock=1
apc.report_autofilter=0
apc.rfc1867=0
apc.rfc1867_prefix =upload_
apc.rfc1867_name=APC_UPLOAD_PROGRESS
apc.rfc1867_freq=0
apc.rfc1867_ttl=3600
apc.lazy_classes=0
apc.lazy_functions=0
extension=memcache.so
extension=memcached.so
注:Memcachedには1 GBのメモリが割り当てられています。
Apacheエラーログ
Apache error.logからの実際のエラーメッセージ。常に同じ場合のエラーメッセージ。 (詳細なプロキシログを有効にしました):
[proxy:debug] [pid 141760:tid 140526898214656] mod_proxy.c(1159): [client myclient] AH01143: Running scheme unix handler (attempt 0), referer: http://mywebsite/website/typo3/install/index.php?TYPO3_INSTALL[type]=cleanup
[proxy_fcgi:debug] [pid 141760:tid 140526898214656] mod_proxy_fcgi.c(879): [client myclient] AH01076: url: fcgi://mywebsite//var/www/html/mywebsite/htdocs/typo3site/website/index.php proxyname: (null) proxyport: 0, referer: http://mywebsite/website/typo3/install/index.php?TYPO3_INSTALL[type]=cleanup
[proxy_fcgi:debug] [pid 141760:tid 140526898214656] mod_proxy_fcgi.c(886): [client myclient] AH01078: serving URL fcgi://mywebsite//var/www/html/mywebsite/htdocs/typo3site/website/index.php, referer: http://mywebsite/website/typo3/install/index.php?TYPO3_INSTALL[type]=cleanup
[proxy:debug] [pid 141760:tid 140526898214656] proxy_util.c(2147): AH00942: FCGI: has acquired connection for (mywebsite)
[proxy:debug] [pid 141760:tid 140526898214656] proxy_util.c(2200): [client myclient] AH00944: connecting fcgi://mywebsite//var/www/html/mywebsite/htdocs/typo3site/website/index.php to mywebsite:8000, referer: http://mywebsite/website/typo3/install/index.php?TYPO3_INSTALL[type]=cleanup
[proxy:debug] [pid 141760:tid 140526898214656] proxy_util.c(2237): [client myclient] AH02545: fcgi: has determined UDS as /opt/php-5.6.11/var/run/php5-fpm-mywebsite.sock, referer: http://mywebsite/website/typo3/install/index.php?TYPO3_INSTALL[type]=cleanup
[proxy:debug] [pid 141760:tid 140526898214656] proxy_util.c(2409): [client myclient] AH00947: connected //var/www/html/mywebsite/htdocs/typo3site/website/index.php to httpd-UDS:0, referer: http://mywebsite/website/typo3/install/index.php?TYPO3_INSTALL[type]=cleanup
[proxy_fcgi:error] [pid 141760:tid 140526898214656] [client myclient] AH01067: Failed to read FastCGI header, referer: http://mywebsite/website/typo3/install/index.php?TYPO3_INSTALL[type]=cleanup
[proxy_fcgi:error] [pid 141760:tid 140526898214656] (104)Connection reset by peer: [client myclient] AH01075: Error dispatching request to : , referer: http://mywebsite/website/typo3/install/index.php?TYPO3_INSTALL[type]=cleanup
[proxy:debug] [pid 141760:tid 140526898214656] proxy_util.c(2162): AH00943: FCGI: has released connection for (mywebsite)
今私の質問:
Webサーバーで繰り返し発生するPHP 503エラーを修正するにはどうすればよいですか?
私の考え:
私はそれらの輸出品ではないので、物事を理解するのに苦労しています。 php-fpmを使用したApacheも一般的ではないようです。ほとんどのGoogleの結果はnginxベースであり、あまり役に立ちません。
多分ここの誰かが私を助けることができますか?
どうもありがとう!!
Proxy行のenablereuse = onオプションを削除して、次のようにします。
<Proxy fcgi://mywebsite/ retry=0>
これにより、「、リファラー...へのリクエストのディスパッチエラー」問題が解決しました。
私はまったく同じ問題を抱えていて、原因を理解しようとしたところ、私たちの理由はバグのあるプラグインであることがわかりました
特に、これを無効にすることで問題を修正しましたwordpress plugin: https://wordpress.org/plugins/custom-css-js/
私たちはphp 7とwordpress 4.5.6。
ですから、php、Apache、またはキャッシュシステムの設定ミスによるものではありません。どちらの問題も、使用可能なリソース(CPU/RAM)の問題ではありませんでした。問題はバグのあるプラグインによるものでした。
問題の原因となったプラグインを見つけるのは非常に困難でした。 phpデバッグオプションのおかげで理解できたので、以下の行をwp-config.phpに追加してデバッグすることをお勧めします。
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors',0);
幸運!
他の投稿が示唆したように、enablereuse=on
は、PHP-FPMデーモンがUnixソケット経由で実行されている場合は使用しないでください。
Mod_proxy_fcgiのApacheドキュメントでは、これを確認することで、
UDSは現在、接続の再利用をサポートしていません
UDSはUnixドメインソケットを意味します。つまり、デフォルトのTCPポートメソッドではなく、PHP-FPMをソケット(.sock)として実行している場合)を意味します。
Nathan Zacharyが、Apache + PHP-FPMをソケットとして構成する方法について詳しく説明します 、その他の関連トピック。
POST enablereuse = onおよびUDSを実行した直後に、クレイジーで予測不可能なApache応答が発生しました。enablereuse= onを削除してサービスを再起動するとすぐに、問題は完全になくなりました。
詳細は mod_h2の人々からの症状とこの問題のデバッグ です。
listen = var/run/php5-fpm-mywebsite.sock
は正しいですか?
仮想ホストの場合については、次の構成を試すことができます。
Apache(VirtualHost
タグ内)
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/DOCUMENT_ROOT_OF_VHOST/$1
PHP-FPMプール
listen = 127.0.0.1:9000
.htaccess
について懸念がない場合は、nginx
をお勧めします。