代码改变世界

linux服务器,请求堵塞,导致服务器挂掉

2020-12-29 17:13  石吴玉  阅读(980)  评论(0编辑  收藏  举报

此文为记录帖,如果错误,烦请指正

 

前提:在Linux服务器中通过Docker部署了服务(WebAPI,使用了swaggerui可视化工具),并使用k8s管理docker容器。

k8s每3秒访问swaggerui页面:https://xx.xxx.xxx:80/index.html,设置3秒的超时时间,连续5次访问失败,则认为该服务失效,k8s会 kill 此服务。

 

问题:服务被k8s关闭了

 

可能因素:

(1)代码因素:访问过多时,等待响应太久(目前设置的100秒),连接一直没有释放,就导致阻塞后续的请求

(2)服务器因素:在 linux系统中 一个请求对应操作系统的一个文件描述符,描述符操作系统默认的是4096个,描述符全部占用之后,就无法接收后续的请求,等待前面释放连接

解决方案:

(1)优化镜像,描述符增加至65535个,会在一定程度上避免这个问题,但弊端是耗费一定的服务器资源

(2)缩短 http请求的超时时间限制(普遍设置为5-10s)