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); //这个是根本解决问题的设置
}
  1. 设置了它后,MINA在调用了close()方法后,不会再进入TIME_WAIT状态了,而直接Close掉了,这样就不会产生这样的那些TIME_WAIT的状态了。

这个搜索服务应用了些参数后,已经没有再出来,因为搜索返回的速度很快,一般是低于50ms以下,每次查看都只能看到几个连接ESTABLISHED而已。Mina 解决请求后直接关闭连接

最新文章

  1. Javascript写了一个2048的游戏
  2. 各大互联网公司前端面试题(js)
  3. find the peak value
  4. CCF真题之门禁系统
  5. mybatis(二)执行CRUD操作的两种方式配置和注解
  6. POJ 3579
  7. TCP/IP三次握手
  8. Linux用户行为日志审计
  9. OC基础 单例
  10. 我见过最好的vsftpd配置教程(转)
  11. BZOJ_2142_礼物_扩展lucas+组合数取模+CRT
  12. 底部导航栏-----FragmentTabHost
  13. java——collection总结
  14. HDU 1722 Cake (数论 gcd)(Java版)
  15. 持续集成(Continuous Integration)基本概念与实践
  16. Loadrunner对https协议(单双向SSL)的web端性能测试
  17. 【转】mxGraph教程-开发入门指南
  18. Jacoco的原理
  19. 世界级的开源项目:TiDB 如何重新定义下一代关系型数据库
  20. golang命令和VSCode配置

热门文章

  1. 【Python】matplotlib绘制折线图
  2. Spket安装
  3. ETL拉链算法汇总大全
  4. 扩展MongoDB C# Driver的QueryBuilder
  5. servletResponse writer输出数据
  6. Github的基本功能:
  7. 【selenium+Python unittest】之发送带中文附件的邮箱
  8. 查看SELinux状态并关闭SELinux
  9. 将參数从PHP传递到JavaScript中
  10. node.js的http模块的基础 学到的东西