开场白:
Mina 是一个韩国人写的基本java NIO的一个高性能的传输框架,我们的搜索就是基本它作为一个搜索服务开放接口了。对于系统的TIME_WAIT过多,造成服务器的负载过高,这个问题我也不用多说了,这段时间发现搜索服务器上的TIME_WAIT过多,我们每天大约总处理70W左右的搜索请求,虽然不多,但是造成了TIME_WAIT很多,有好几千个,可以 netstat -antu | grep :端口
就知道了。(安全起见,端口作了模糊处理)
开始:
其实网上很多解决方法的,
1.
就是在启动的脚本文件里面加上 ulimit -n 1024 或者更多就可以了,其实是治标不治本的
2.
linux下修改/etc/sysctl.conf,然后执行/sbin/sysctl -p 使修改生效,修改的信息如
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
这显然需要修改linux内核参数,一定需要管理员帐号,而我这边却没有这个权限。但也不是最根本的解决方法。
4. 从程序的优化解决角度来说,因为是MINA产生的,那就可以看看MINA的参数配置有没有这样的参数设置了。最后发现在MINA那里有一个参数 setSoLinger(int i) 可以有很效地解决这个问题。
最后Mina的参数应该是这样的。覆盖IoHandlerAdapter的sessionCreated方法应该要这样设置参数。
@Override
public void sessionCreated(IoSession session) throws Exception {
// TODO Auto-generated method stub
SocketSessionConfig cfg = (SocketSessionConfig) session.getConfig();
cfg.setReceiveBufferSize(2 * 1024 * 1024);
cfg.setReadBufferSize(2 * 1024 * 1024);
cfg.setKeepAlive(true);
cfg.setSoLinger(0); //这个是根本解决问题的设置
}
设置了它后,MINA在调用了close()方法后,不会再进入TIME_WAIT状态了,而直接Close掉了,这样就不会产生这样的那些TIME_WAIT的状态了。
如下图:(安全起见,端口作了模糊处理)
这个搜索服务应用了些参数后,已经没有再出来,因为搜索返回的速度很快,一般是低于50ms以下,每次查看都只能看到几个连接ESTABLISHED而已。
欢迎连载与讨论。请注明出处。
www.open-china.net
- 大小: 217.6 KB
- 大小: 45 KB
分享到:
相关推荐
mina_social_business_api-master
Mina_in_real_life_ASEU-2009.pdf,类似于宣传册的小册子
里面包含mina2.0的api(英文)和mina自学手册,还有mina的开发指导
Apache Mina中文参考手册 Apache MINA是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可靠性的网络应用程序
Apache_Mina_Server_2.0中文参考手册V1.0.pdf
Apache mina网络应用开发框架的demo。Apache mina是Java的非常优秀的网络应用开发框架。
Socket框架,对TCP/IP协议能更好的封装并简单使用
mina内部源码,可以深入的研究下,重构修改后获得的效率更加突出
mina mina传输对象的示例 mina框架 mina示例
mina 服务端的简单应用,直接部署可以使用。
Apache_Mina的一个不错的教程,值得收藏
本资源包含两个 pdf 文档,一本根据官方最新文档 (http://mina.apache.org/mina-project/userguide/user-guide-toc.html) 整理的 mina_2.0_user_guide_en.pdf,一个中文翻译的 mina_2.0_user_guide_cn.pdf。...
mina实现UDP协议的代码,学习Mina的可以研究一下,对学习有好处的
apache的mina服务器编程手册的随笔翻译,对入门有用
Apache_Mina_Server_ 深入教程V1.0Apache_Mina_Server_ 深入教程V1.0Apache_Mina_Server_ 深入教程V1.0Apache_Mina_Server_ 深入教程V1.0Apache_Mina_Server_ 深入教程V1.0
java 支持http访问,支持get、post等方式
在apache mina传输中可能需要的几个jar包,包括 mina-core-2.0.0-M1.jar slf4j-api-1.5.11.jar slf4j-log4j12-1.5.11.jar log4j-1.2.14.jar
Apache_Mina_Server_2.0中文参考手册
mina自定义编解码 不错的资源 ----其实不怎么样,技术就是拿出来共享的,开源。大家一起前进
一个mina跟Spring、Hibernate整合的说明文档,挺好的,有需要的可以看看