gpt4 book ai didi

varnish - 对 Varnish sess_closed_err进行故障排除

转载 作者:行者123 更新时间:2023-12-03 17:46:00 26 4
gpt4 key购买 nike

我们使用Varnish-cache 6.0向客户提供IPTV服务,我一直担心我们的Varnish-cache服务器可能存在问题。此假设基于IPTV流而不是后端服务器直接流经我们的Varnish缓存时客户事件报告的数量。

这就是为什么我想消除varnishstat中的所有错误以缩小事件发生的可能原因的原因,因为目前我没有更好的角度来解决问题。

让我们声明一下,我对Varnish并不熟悉或不是专家。

,让我们深入探讨“问题”:

varnishstat -1 output:

MAIN.sess_closed 38788 0.01 Session Closed

MAIN.sess_closed_err 15260404 3.47 Session Closed with error

基本上,与Varnish缓存服务器的几乎所有连接都会因错误而关闭。我使用相同的Varnish配置将虚拟化演示服务器设置到我们的网络,并且当我在VLC-mediaplayer中更改 channel 时,仅生成了sess_closed_err。让我们注意,我无法同时运行几个VLC到服务器,并且我们的客户使用STB-box来使用该服务。

所以我的实际问题是,如何解决导致 session 错误关闭的原因?

最佳答案

还有其他一些计数器将更具体地显示 session 发生的情况。因此,进行故障排除的下一步是查看以下计数器:

varnishstat -1 | grep ^MAIN.sc_

我将用一个典型的例子来详细说明:
$ sudo varnishstat -1 | egrep "(sess_closed|sc_)"
MAIN.sess_closed 8918046 1.45 Session Closed
MAIN.sess_closed_err 96244948 15.69 Session Closed with error
MAIN.sc_rem_close 86307498 14.07 Session OK REM_CLOSE
MAIN.sc_req_close 8402217 1.37 Session OK REQ_CLOSE
MAIN.sc_req_http10 45930 0.01 Session Err REQ_HTTP10
MAIN.sc_rx_bad 0 0.00 Session Err RX_BAD
MAIN.sc_rx_body 0 0.00 Session Err RX_BODY
MAIN.sc_rx_junk 132 0.00 Session Err RX_JUNK
MAIN.sc_rx_overflow 2 0.00 Session Err RX_OVERFLOW
MAIN.sc_rx_timeout 96193210 15.68 Session Err RX_TIMEOUT
MAIN.sc_tx_pipe 0 0.00 Session OK TX_PIPE
MAIN.sc_tx_error 0 0.00 Session Err TX_ERROR
MAIN.sc_tx_eof 3 0.00 Session OK TX_EOF
MAIN.sc_resp_close 0 0.00 Session OK RESP_CLOSE
MAIN.sc_overload 0 0.00 Session Err OVERLOAD
MAIN.sc_pipe_overflow 0 0.00 Session Err PIPE_OVERFLOW
MAIN.sc_range_short 0 0.00 Session Err RANGE_SHORT
MAIN.sc_req_http20 0 0.00 Session Err REQ_HTTP20
MAIN.sc_vcl_failure 0 0.00 Session Err VCL_FAILURE

该特定环境的输出显示,大多数因错误而关闭的 session 都是由于接收超时( MAIN.sc_rx_timeout)而发生的。此超时控制 Varnish 将保持空闲连接打开的时间,并使用 timeout_idle参数设置为 varnishd。默认情况下,其值为5秒。使用 varnishadm查看当前值和超时说明:
$ sudo varnishadm param.show timeout_idle
timeout_idle
Value is: 10.000 [seconds]
Default is: 5.000
Minimum is: 0.000

Idle timeout for client connections.

A connection is considered idle until we have received the full
request headers.

This parameter is particularly relevant for HTTP1 keepalive
connections which are closed unless the next request is
received before this timeout is reached.

增加 timeout_idle可能会减少由于空闲超时而关闭的 session 数。这可以通过在启动 Varnish 时将值设置为参数来完成。例子:
varnishd [...] -p timeout_idle=15

请注意,有 pros and cons与增加此超时有关。

关于varnish - 对 Varnish sess_closed_err进行故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54941138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com