Apache-2.2

恰好 60 秒後清漆 503 錯誤…如何更改此超時值?

  • November 23, 2017

我在 Drupal 站點上通過 Apache 執行 Varnish。我有一個 PHP 腳本,它在我網站的某個路徑上執行,並且需要很長時間……比如 60 - 120 秒。嘗試訪問該頁面時,Varnish 總是在 60 秒後給我 503 大師冥想超時。

我嘗試將 Varnish connect_timeout 設置為一個非常高的值…我嘗試將 Apache 的 php.ini 中的所有超時設置為非常高的值…但是沒有運氣:Varnish 在正好 60 秒後一直給我 503 錯誤.

**所以這是我的問題:這個 60 秒的超時值是從哪裡來的?**我在這裡拔頭髮…

(僅供參考:如果我將 Varnish 排除在外,Apache 會在 60 - 120 秒後按預期提供頁面,這讓我認為超時必須在 Varnish 端的某個地方……)。

當我的伺服器負載不大時,我遇到了 503 錯誤。我試圖通過增加 vcl conf 中的超時來避免這個問題

first_byte_timeout = 300s; (預設設置為 60s)<- 可能這個可以回答你的問題(或不回答):)

請檢查一下

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}"

引用自:https://serverfault.com/questions/573169