节点端常见疑难问题
对接安装失败
请看具体的错误,大概率是网络或者系统有问题。
安装过程出现 APT 错误
- 您的系统不是 Debian 系,则会出现
apt-get not found
的错误,请重做系统。 - APT 软件源配置有误,请上网搜索此类教程。国内机器建议使用清华/USTC镜像源。
对接成功但是服务器不上线
请看日志中具体的错误(可能需要往右边翻页)。
如果日志显示 上报失败
timeout
lookup 你的域名
这类错误,则大概率是节点机器网络有问题。(网络问题通常出现在中国机器,解决方法: 挂代理)
所有 IP 都被反向墙了的机器就别用了,反正都上不了网。
跳延迟
可能的原因
- 入口或出口负载太满。
- 网络波动、丢包。
- 使用了域名作为地址,而不是 IP,有时解析域名会花费很长的时间(超过 500ms)。
如果 [诊断] 显示正常,而实际客户端 HTTP 连接测试的延迟有 1~2 个 RTT 的波动(广港 50ms 以内,沪日 100ms 以内),则是 0RTT 复用没有覆盖的原因,这种波动是正常且无法避免的。
miaoko 的 "HTTPS 延迟" 纯属娱乐,请勿当真。因为其中不仅包含了协议的握手延迟,还包含了 DNS 的延迟。只有在客户第一次连接才是这个延迟,后续连接延迟则是接近 ( 所谓的 TLS RTT + 客户到入口的 RTT )。
同步失败 (TCP 端口占用)
寻找占用程序: netstat -tapn | grep :某个端口
中断本地端口上的连接: ss -K sport 某个端口
nodeclient 不会重复尝试监听端口,若您已释放端口,还需要手动重启规则,规则才会生效。
可能的原因
- 入口机器上有其他程序监听了这个端口(永久性占用)
- 入口机器上有出站连接占用了这个端口(一般是临时性的)
针对第二种原因,双 IP 的机器可设置环境变量 BIND_INBOUND
指定入口监听 IP,这样隧道入口的「入站」和「出站」端口将位于不同的 IP,不会冲突。
奇怪的问题 1
现象:探针页显示服务器离线,但已有转发规则正常使用。规则的同步变慢或者根本不同步。
原因:网络问题,多见于国内入口。此时服务器与面板的实时通信受阻,进入离线模式。
离线模式:正在运行的规则继续运行,流量信息延缓上报。若在网络恢复前重启,则会丢失运行的规则和流量。
如何恢复:服务器会主动尝试重连,若网络恢复,则自动恢复在线。若网络质量实在太差,建议挂代理。
奇怪的问题 2
现象:规则 / 探针时好时坏、随机出现大面积的端口占用。
原因:同一机器重复运行节点端。
排查方法: 在节点机器上 ps -aux | grep nodeclient
查看是否有相同的命令,如果有,请卸载多余的。
奇怪的问题 3
现象:两台机器在探针中显示为同一台,IP 反复跳。
原因:克隆系统造成的。
排查方法: rm /root/.config/.nodeclient_uuid
然后重启。
日志显示 Please wait panel start
是正常现象,少量出现忽略即可。
更新/重启节点/添加服务器/故障转移结束后,负载不均衡
是正常现象。
- 出口重启的瞬间(如果有用户在连接)会造成大量连接错误,导致出口进入故障转移状态。需要等一段时间连接数才能重新均衡。
- 程序不会打断已有的连接,因为这样会造成用户连接断开。程序会以连接数为标准,优先向负载低的服务器分配新连接。
- 强制立即均衡的唯一办法是重启入口。(这样会导致用户短暂掉线)
节点端消耗大量 CPU 或内存
1
- 配置就是要用的。
- 加密隧道、大量连接调度与密集的网络 IO 操作是要吃 CPU 和内存的,而且要吃很多。
- Nyanpass 的隧道转发效率已经比 "友商" 和 "开源" 好很多了,请知足。
2
- Golang 程序倾向于吃更多的内存以提升自身的运行效率。请结合多个内存指标分析,不可单看系统整体占用或程序占用。
- 当系统可用内存不足,程序会自动归还部分内存。只要没有爆内存(服务自动重启)或者系统卡死,就是正常的。
3
- 如果节点程序本身 RSS 占用很低,但是系统总体内存很高,则应该是系统 TCP Buffer 占用的,单纯表明当前系统资源与参数无法负载这么多用户。这种没有什么简单的解决办法,只能尝试调节
net.ipv4.tcp_rmem
net.ipv4.tcp_wmem
等参数。 - 如果系统 CPU 占用中 st% 持续大于 0,则大概率是虚拟化超开的问题。与程序无关。