连接数突然上升 app服务网络无法链接 重启app服务又正常了 间隔几个小时要重启一次 请看图片24小时

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果 请问是什么原因 在吗解决

img

img

你这不就是解决高并发的问题么,一下子访问量过大导致服务器奔溃

原因:windows系统BUG,微软官网有详细介绍,系统并发过大,连接数过多,部分socket连接无法释放关闭,而持续请求又导致无法释放的socket连接不断积压,最终导致No buffer space available

1.对于windows环境,可通过修改注册表进行配置:

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

添加一个DWORD类型的值TcpTimedWaitDelay,值可以根据实际情况配置(可以配置十进制30秒)。

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters

添加一个DWORD类型的值MaxUserPort ,值可以根据实际情况配置(5000-65534)。
2.重启服务器

备注:
TcpTimedWaitDelay:确定 TCP/IP 可释放已关闭连接并重用其资源前,必须经过的时间;缺省为240秒,最低为30秒,最高为300秒。建议设为30秒。
MaxUserPort :确定在应用程序从系统请求可用用户端口时,TCP/IP 可指定的最高端口号;缺省值:无 建议值:至少十进制 32768


也可以将以下两行复制到空白txt中,保存关闭txt,然后再修改txt为bat,这样就变成了一个批处理文件,双击批处理即可完成上面所说的注册表里的添加

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters" /v "TcpTimedWaitDelay" /t REG_DWORD /d 30 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters" /v "MaxUserPort" /t REG_DWORD /d 65534 /f

并发量太大了。

请问你这个服务器上跑的应用是什么?看你贴图是凌晨2点突然出现高并发连接,能否确认是正常连接?

这个并发可以存放队列,或者是给限流或者限制ip,这么大数据量看是否正常,做出规则限制

不要听他们瞎说,一会是windwos服务器bug的,一会是并发问题的。
通过图片就能看出来io比较大,当io达到系统磁盘的瓶颈时,内存随之也会增加;
至于网络问题你要确认一下服务器的带宽是否都被占满,还是因为内存不足或者时磁盘读写,
还有就是tcp长连接也会占用不少内存,从图中可以看出来tcp链接大的时候磁盘的读写也随之变大,
别上面的人胡扯,如果是cpu产生的问题,那为什么cpu始终在25%之下;

从监控上看cpu属于正常水平,内存也正常(低于80%),唯一异常的就是连接数标高,是否业务中存在某些接口被恶意调用,如果有相关服务监控可以排查下是否存在耗时点

改进App,退出或者异常退出,都要把链接关闭并删除,异常处理代码中关闭链接(如果有链接的话)

高并发造成的,某一时间段接口访问次数过多或集中爬取接口数据致使连接数增加,重启服务后内存中的连接断开,连接数减少,当接口访问量增加时又会升高,可以通过限流来控制接口单位时间内的请求次数

观察一下,可以发现实例云盘读写BPS和连接数2点左右都激增了一次,估计是io问题,内存不足。在云服务器控制台,看到 bps 出现过高的时候,内存都会有小高峰。可以考虑增加虚拟内存。bps 过高的时候,服务器通常会卡死,ssh 也链接不上。通常5 ~ 20分钟,就会自动的恢复。当然重新启动服务器,也可以解决。

不是被攻击了吧