【FAQ】频繁提示需要重连,RPCException
金蝶云社区-蔡嘉盛
蔡嘉盛
1人赞赏了该文章 702次浏览 未经作者许可,禁止转载编辑于2019年12月26日 15:17:37

【问题现象】部分客户频繁提示需要重连,部分客户通过客户端无法登录系统

webservice调用接口错误已说明,客户是apusic测试许可,存在服务器rpc连接问题
apusic日志报错
(errorCode:5001) com.kingdee.bos.rpc.RPCException: Cannot Connect To Any RPC ServerServer,All Server Are Unavailable!

在Linux上执行
netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}'
得到结果中
TIME_WAIT =50039
接近用完的边界。
【解决办法】
1.对于eas打补丁补丁号:PT144967,解决rpc 主实例热备频繁新建关闭socket导致timewait过多。

2.对于Linux修改参数

vi /etc/sysctl.conf 增加如下内容:(不要把中文复制进去,已经存在的也不要复制)



net.ipv4.tcp_syncookies = 1 #表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 #表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 #表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭;
net.ipv4.tcp_fin_timeout = 30 #修改系統默认的 TIMEOUT 时间。


net.ipv4.tcp_keepalive_time = 1200 #表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.ip_local_port_range = 10000 65000 #表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为10000到65000。(注意:这里不要将最低值设的太低,否则可能会占用掉正常的端口!)
net.ipv4.tcp_max_syn_backlog = 8192 #表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 6000 #表示系统同时保持TIME_WAIT的最大数量,如果超过这个数字,TIME_WAIT将立刻被清除并打印警告信息。默认180000,改为6000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于 Squid,效果却不大。此项参数可以控制TIME_WAIT的最大数量,避免Squid服务器被大量的TIME_WAIT拖死。


最后sysctl -p 生效;

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0