【golang】未关闭连接造成的血案
来源:互联网 发布:港股 程序化交易软件 编辑:程序博客网 时间:2024/05/04 01:59
正常来说,TCP连接的两端在使用完成要及时关闭连接,特别是主动连接的一方(客户端)使用完要主动关闭。
最近就遇到没有关闭连接造成重大问题的案例。
1. 一个服务端程序需要调用第三方服务,调用完后,没有关闭连接。
后果:服务端程序使用内存不断上涨,不断上涨,不断上涨,最后挂掉。
未解决前,只能通过监控,内存快没有时重启一下。
解决:http请示调用第三方服务后,关闭连接。
2.一个hadoop的HDFS客户端,也是调用完没有关闭连接。
后果:namenode的fin2_wait越来越多,fin2_wait越来越多,fin2_wait越来越多,并不会自动降下来,然后造成很多namenode的连接timeout。
尝试的解决:在namenode服务器各种内核参数调整未能起作用。根据TCP连接原理,我们也了解到fin2_wait是因为客户端没有关闭连接造成的,也定位到所在的客户端服务器,对调用namenode比较明显的服务进行代码review,未发现未关闭情况。
未解决前,重启hadoop,泪呀。
解决:一个忽略的服务中不明显的GET请求,http连接后没有关闭,因此使用完close即可。
两个案例说明关闭连接的重要性,不是不必要的。平时强调,但还是没有注意到,需要加强压力测试和代码审查。
0 0
- 【golang】未关闭连接造成的血案
- golang http 请求未释放造成的错误
- 一个改进造成的血案
- data没有初始化造成的血案
- 一个面试题造成的血案
- Spring的getSession方法造成的数据库不关闭连接
- Spring的getSession方法造成的数据库不关闭连接
- Spring的getSession方法造成的数据库不关闭连接
- Android内存泄漏(线程造成的内存泄漏与资源未关闭造成的内存泄漏)
- winpcap 线程未安全关闭造成的问题————bogus savefile header
- 连接未关闭报错
- oracle 查看未关闭连接
- mybatis逻辑连接未关闭
- HibernateDaoSupport 类session未关闭导致的连接泄露问题
- 连接池未关闭问题的发现与解决
- Golang Socket Tcp 连接优雅关闭
- Android编程之另一种原因造成Cursor未关闭错误
- 输出流关闭造成的Socket关闭
- Filter,一种aop编程思想的体现
- python day2
- Vue学习(一)基础语法
- 《深入理解Java虚拟机》学习笔记-- Java内存区域
- PostgreSql对空间数据的操作函数
- 【golang】未关闭连接造成的血案
- 工作流--JBPM任务管理
- web的监听器,你需要知道这些...
- 欢迎使用CSDN-markdown编辑器
- ResourceManager REST API’s.
- 安卓项目SimpleQQ——发送短信分享软件
- 小白学《神经网络与深度学习》笔记之五:深度学习的胜利:AlphaGo
- 关于Java的反射机制,你需要理解这些..
- eclipse(1)------提示:"The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build"