varnish sess_closed_err故障排除

问题描述 投票:0回答:1

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

这就是为什么我想从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-cache服务器的连接都会出错。我使用相同的Varnish配置为我们的网络设置了虚拟化演示服务器,当我在VLC-mediaplayer中更改频道时,只生成了sess_closed_err。让我们注意到,我无法同时运行几个VLC到服务器,而且我们的客户使用STB盒来使用该服务。

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

varnish iptv
1个回答
1
投票

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

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

此特定环境的输出显示由于接收超时(MAIN.sc_rx_timeout)而发生错误关闭的大多数会话。此超时控制清漆保持空闲连接打开的时间长度,并使用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可能会减少因空闲超时而关闭的会话数。这可以通过在启动清漆时将值设置为参数来完成。例:

varnishd [...] -p timeout_idle=15

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

© www.soinside.com 2019 - 2024. All rights reserved.