netty的http1服务器在运行一段时间后会无法提供服务,返回客户端socket hang up
使用apipost测试抓包显示三次握手后被reset
修改net/core/somaxconn
登录容器,cat /proc/sys/net/core/somaxconn显示128,对于一个服务器来说,这个限制太小了,可以放大。
但是k8s把容器的参数分类了,大部分的参数都属于unsafe,不能直接修改。
第一步:修改kubelet启动参数
kubelet启动增加参数:kubelet --allowed-unsafe-sysctls ‘net.core.somaxconn’
kubelet可能是通过配置文件启动的,比如/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
修改后重启kubelet:systemctl restart kubelet
确认是否生效:
第二步:修改netty的yaml
在Deployment中spec-template-spec-containers下增加securityContext:
securityContext: sysctls: - name: net.core.somaxconn value: "1024"
启动pod后查看somaxconn:
修改 TIME_WAIT 连接数量
cat /proc/net/tcp查看到tcp连接数非常多,(没看懂具体内容,待补充)
需要修改关闭连接的等待时间
步骤一 修改kubelet配置,增加:
--allowed-unsafe-sysctls net.core.somaxconn,net.ipv4.*
步骤二 修改deployment:
securityContext: sysctls: - name: net.core.somaxconn value: "1024" - name: net.ipv4.tcp_fin_timeout value: "30" - name: net.ipv4.tcp_tw_reuse value: "1"