60 秒后出现 Varnish 503 错误...如何更改此超时值?

60 秒后出现 Varnish 503 错误...如何更改此超时值?

我在 Drupal 网站上通过 Apache 运行 Varnish。我有一个 PHP 脚本,它在网站的某个路径上执行,需要很长时间……比如 60 - 120 秒。尝试访问该页面时,Varnish 总是在 60 秒后给我 503 guru 冥想超时。

我尝试将 Varnish connect_timeout 设置为一个非常高的值...我尝试将 Apache 的 php.ini 中的所有超时设置为一个非常高的值......但没有成功:Varnish 在 60 秒后一直给我 503 错误。

所以我的问题是:这个 60 秒超时值从何而来?我正在拔掉我的头发……

(仅供参考:如果我将 Varnish 排除在外,Apache 会在 60 - 120 秒后按预期提供页面,这让我认为超时一定是在 Varnish 的某个地方...)。

答案1

当我的服务器负载不大时,我遇到了 503 错误。我尝试通过增加 vcl conf 中的超时来避免该问题

first_byte_timeout = 300s; (默认设置为 60 秒)<- 这个可能可以回答你的问题(或者不能):)

请检查一下

http://vincentfretin.ecreall.com/articles/varnish-guru-meditation-on-timeout

希望这个有帮助

答案2

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

相关内容