DrupalサイトでApacheを介してVarnishを実行しています。サイトの特定のパスで実行されるPHPスクリプトがあり、非常に時間がかかります時間... 60〜120秒のようです。そのページにアクセスしようとすると、ワニスは常にちょうど60秒後に503グルの瞑想タイムアウトを与えます。
Varnishのconnect_timeoutを非常に高い値に設定しようとしました... Apacheのphp.iniのすべてのタイムアウトを非常に高い値に設定しようとしました...しかし運が悪い:Varnishはちょうど60秒後に503エラーを表示し続けます。
これが私の質問です:この60秒のタイムアウト値はどこから来ているのですか?ここで髪を引っ張っています...
(参考:Varnishを画像から外した場合、Apacheは60〜120秒後に期待どおりにページを提供します。これにより、タイムアウトがVarnish側のどこかにあるはずだと思います...)。
サーバーの負荷が低いときに503エラーが発生しました。私はvcl confのタイムアウトを増やすことでその問題を回避しようとしました
first_byte_timeout = 300s; (デフォルトではこれは60秒に設定されています)<-おそらくこれはあなたの質問に答えることができる(またはできない):)
親切にこれをチェックしてください
http://vincentfretin.ecreall.com/articles/varnish-guru-meditation-on-timeout
これが役に立てば幸い
Error 503 Backend fetch failed
Backend fetch failed
この問題を解決するには、Varnish設定ファイルのhttp_resp_hdr_lenパラメータのデフォルト値を増やします。 http_resp_hdr_lenパラメーターは、デフォルトの合計応答サイズ32768バイト内の最大ヘッダー長を指定します。
Http_resp_hdr_len値が32768バイトを超える場合は、http_resp_sizeパラメータを使用してデフォルトの応答サイズを増やす必要もあります。 root権限を持つユーザーとして、テキストエディターでVanish構成ファイルを開きます。
CentOS 6: /etc/sysconfig/varnish
CentOS 7: /etc/varnish/varnish.params
Ubuntu: /etc/default/varnish
Http_resp_hdr_lenパラメータを検索します。パラメータが存在しない場合は、thread_pool_maxの後に追加します。 http_resp_hdr_lenを、最大カテゴリの製品数に21を掛けた値に設定します(各製品タグの長さは約21文字です)。
たとえば、最大のカテゴリに3,000個の製品がある場合、値を65536バイトに設定すると機能します。
-p http_resp_hdr_len=65536 \
Http_resp_sizeを、増加した応答ヘッダー長に対応する値に設定します。
たとえば、増加したヘッダー長とデフォルトの応答サイズの合計を使用するのが適切な開始点です(たとえば、65536 + 32768 = 98304)。
-p http_resp_size=98304 \
スニペットは次のとおりです。
# DAEMON_OPTS is used by the init script.
DAEMON_OPTS="-a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} \
-f ${VARNISH_VCL_CONF} \
-T ${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT} \
-p thread_pool_min=${VARNISH_MIN_THREADS} \
-p thread_pool_max=${VARNISH_MAX_THREADS} \
-p http_resp_hdr_len=65536 \
-p http_resp_size=98304 \
-S ${VARNISH_SECRET_FILE} \
-s ${VARNISH_STORAGE}"