Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

server端程序疑似挂起 #785

Closed
tete1030 opened this issue Apr 22, 2020 · 3 comments
Closed

server端程序疑似挂起 #785

tete1030 opened this issue Apr 22, 2020 · 3 comments

Comments

@tete1030
Copy link
Contributor

tete1030 commented Apr 22, 2020

问问题前先搜索ISSUE,并搞清楚下面的问题:

  1. 检查 -key xxx 至少三遍, 保证两边一致。(一致)
  2. 保证-nocomp, -datashard, -parityshard, -key, -crypt, -smuxver两边一致。(一致)
  3. 是否在服务器端,正确设定了转发的目标服务器地址 --target。(YES)
  4. 是否在客户端,正确的连接到了 client的监听端口。(YES)
  5. 如果第3条不确定,尝试在服务器上telnet target port试试。
  6. 防火墙是否关闭了UDP通信,或者设置了UDP的最大发包速率?(CHECKED)
  7. 两端的版本是否一致?(YES)
  8. 是不是最新版本?(v20200409)
  9. 两端分别是什么操作系统?(docker container: xtaci/kcptun)
  10. 两端的输出日志是什么?

现象

成功通信一段时间后(数小时到十几分钟不等),通信中断,server端停止响应(以下非明确指出时均在server端进行),无新日志输出,tcpdump显示仍有大量udp包到达docker container的listen端口,container内运行netstat显示Recv-Q数值很高。期间客户端一直在尝试连接,客户端有日志输出。

重启客户端不能解决,只有重启kcptun服务端才恢复正常。

image

另外出现一个有趣的附带现象,中断现象发生一段时间后,到服务器(server端在此运行)ip的ping值出现了三角形响应(用netdata进行每秒钟1次ping),该现象复现多次,重启服务端kcptun后图形消失。

image

放大后的形状:
image

服务端配置(docker-compose.yaml)

version: "3"

services:
  shadowsocks:
    image: shadowsocks/shadowsocks-libev:v3.3.4
    ulimits:
      nofile:
        soft: 65535
        hard: 65535
    ports:
    - "10388:10388"
    restart: always
    command:
    - ss-server
    - -s
    - "0.0.0.0"
    - -p
    - "10388"
    - -b
    - "0.0.0.0"
    - -m
    - MY_KEY_ALGO
    - -k
    - "MY_KEY"
    - --fast-open
    - --no-delay
    - -u

  kcptun:
    image: xtaci/kcptun:v20200409
    ulimits:
      nofile:
        soft: 65535
        hard: 65535
    ports:
    - "10389:10389/udp"
    restart: always
    depends_on:
    - shadowsocks
    command:
    - /bin/server
    - -t
    - "shadowsocks:10388"
    - -l
    - ":10389"
    - --mode
    - fast2
    - --sockbuf
    - "16777217"
    - --dscp
    - "46"
    - --crypt
    - MY_KEY_ALGO
    - --key
    - "MY_KEY"
    - --rcvwnd
    - "2048"
    - --sndwnd
    - "2048"
    - --nocomp
    - --smuxver
    - "2"
    - --streambuf
    - "2097152"
    - --mtu
    - "1400"

iptables 的filter和nat无特别的配置(只有docker自动创建的一些策略)
sysctl已按照要求配置

net.core.rmem_max=26214400
net.core.rmem_default=26214400
net.core.wmem_max=26214400
net.core.wmem_default=26214400
net.core.netdev_max_backlog=4096
@tete1030
Copy link
Contributor Author

日志没有特殊的输出,都是正常的stream open、 stream close,然后日志停止。
如果这个问题比较复杂,我也可以自己编译kcptun以debug这个问题,比如插入一些额外的log输出。还想请指点一下哪些地方最有可能是问题根源

@tete1030
Copy link
Contributor Author

tete1030 commented Apr 22, 2020

此前没有关注cpu占用,刚刚才发现出问题期间cpu占用率几乎100%。服务器没有其他运行负载,仅有shadowsocks和kcptun。这就能解释ping值的三角形波动了
Edit:
看到CPU占用才发现了 #771 。正在用latest测试

@tete1030
Copy link
Contributor Author

确认已解决

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant