`
kernaling.wong
  • 浏览: 78834 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

解决Mina的传输中造成的TIME_WAIT过多的问题

    博客分类:
  • java
阅读更多
开场白:
 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
分享到:
评论
1 楼 0dragon 2011-06-24  
 

相关推荐

    apache-mina-2.0.4.rar_Mina框架_SerialAddress_mina_mina apache down

    在标题"apache-mina-2.0.4.rar_Mina框架_SerialAddress_mina_mina apache down"中,我们关注到"SerialAddress",这在Mina框架中是一个关键概念。 1. **Mina框架**:Mina的核心在于其非阻塞I/O模型,基于Java NIO...

    mina-master_mina_

    标题中的"mina-master_mina_"可能指的是一个MINA项目或示例的主分支,可能包含了服务器端的核心代码和配置。描述中提到的"mina 服务端的简单应用,直接部署可以使用"表明这个压缩包包含了一个能够快速运行的MINA...

    Apache-Mina-2.rar_apache mina_java mina_mina_mina-core-1.1.3

    对于初学者来说,这样的文档可以帮助快速理解和上手Mina,对于有经验的开发者,它也能提供必要的参考和解决实际问题的策略。 "java_mina"标签表明这个框架是用Java语言实现的,因此具备Java的跨平台特性。Mina利用...

    TestMINA.zip_DEMO_Mina框架_java mina_mina_mina java

    这个“TestMINA.zip_DEMO_Mina框架_java mina_mina_mina java”压缩包包含了使用Java实现的MINA框架的示例代码,旨在帮助开发者快速理解和应用MINA。 MINA的核心概念包括事件驱动和非阻塞I/O模型,这两个特性使得它...

    MINA_API+MINA_DOC+mina

    最后,`Apache_Mina_Server_2.0中文参考手册V1.0.pdf` 是MINA服务器端的中文参考手册,对于想要使用MINA构建服务器端应用的开发者来说尤其有用。这份手册可能详细解析了MINA服务器的搭建步骤、配置选项,以及如何...

    udp.rar_MINA udp_android mina UDP_mina_mina u

    标题中的“udp.rar_MINA udp_android mina UDP_mina_mina u”暗示了这是一个关于使用MINA框架在Android平台上实现UDP通信的资源包。MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、...

    apache-mina-2.0.4.rar_apache mina_mina

    Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个"apache-mina-2.0.4.rar"压缩包包含的是Apache Mina 2.0.4版本的源代码,是深入理解和定制Mina的...

    MINA_user_guide_cn.zip_mina

    这个“MINA_user_guide_cn.zip”压缩包包含了MINA的用户指南中文版,对于初学者来说是一个非常有价值的资源。 MINA的核心设计理念是基于事件驱动和非阻塞I/O模型,这使得它在处理大量并发连接时表现出色。非阻塞I/O...

    mina-http-2.0.7.jar.zip_mina_mina 获取POST_mina-http_mina-http-2.0

    MINA的核心设计目标是提供一个与传输协议无关的抽象层,使得开发者可以轻松地构建基于TCP/IP、UDP/IP或其他协议的网络应用。在标题中提到的"mina-http-2.0.7.jar",是MINA框架针对HTTP协议的一个实现,特别强调了对...

    Apache_Mina_Server_2.0_V1.0.rar_apache_apache中文手册_mina

    Apache Mina 是一款高度可扩展的网络通信框架,主要由 Apache 软件基金会开发,广泛应用于构建高性能、高效率的网络服务器。本手册“Apache Mina Server 2.0中文参考手册V1.0”提供了对 Mina 2.0 版本的详细解析,...

    给予mina 协议进行大数据传输

    标题中的“给予mina协议进行大数据传输”指的是一种基于Java的网络通信框架——Apache MINA(Model-View-Controller for Network Applications)。MINA是Apache软件基金会的一个项目,它提供了一个高度可扩展和高...

    Apache_Mina.zip_apache_mina

    Apache Mina是一个高性能、异步事件驱动的网络通信框架,主要用在开发网络应用服务器,如FTP、SMTP、NNTP等协议服务器。本教程“深入理解Apache Mina”将帮助我们深入了解这一强大的Java库。 Apache Mina的核心理念...

    mina传输对象的示例

    在标题和描述中提到的“mina传输对象的示例”指的是如何在Mina框架下处理和传输自定义的数据对象。Mina允许开发者通过事件驱动和异步I/O模型来高效地构建网络服务。 Mina的核心组件包括: 1. **Session**: 表示...

    Mina_in_real_life_ASEU-2009.pdf

    ### MINA 在现实生活中的应用与理解 #### 一、引言 Mina 是一个基于 NIO(非阻塞 I/O)技术的框架,它提供了一种高效、灵活的方式来处理网络通信。通过本篇文档,我们将深入探讨 MINA 的基本概念、应用场景以及如何...

    mina_social_business_api-master.zip

    "Mina_social_business_api-master"这个项目名称暗示了其主要目标是提供一套与社交和商业相关的API。API(Application Programming Interface)是一组预定义的函数、类和协议,允许开发者通过编程方式调用特定服务或...

    Apache MINA 2.0 用户指南中英文对照阅读版[带书签]

    本资源包含两个 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网络通信传输

    Mina网络通信传输是基于Java开发的一个高性能、可伸缩的网络应用框架,常用于构建服务器和客户端之间的通信系统,尤其适用于即时聊天应用。Mina提供了丰富的API和工具,简化了网络编程的复杂性,使得开发者可以专注...

    mina文件传输

    字符串可能需要通过特定的编码器(如StringEncoder)转化为ByteBuf,以便在网络中传输。 3. **服务器端**: - **接收请求**:服务器端监听特定端口,接收到客户端的连接请求后,创建一个Acceptor来处理。Acceptor...

    mina的高级使用,mina文件图片传送,mina发送文件,mina报文处理,mina发送xml和json

    在Mina中,我们可以利用BufferedIoFilter或者IoBuffer来传输文件,包括图片。首先,我们需要将图片文件读取到内存中的IoBuffer,然后通过过滤器链传递给远程客户端。在这个过程中,可以实现数据压缩、加密等额外...

    Mina-Spring-Hibernate.rar_mina_mina hibernate_spring mina

    《Mina-Spring-Hibernate整合详解》 在Java开发领域,Mina、Spring和Hibernate是三个非常重要的技术组件。Mina作为一个高效的网络通信框架,Spring作为全栈式框架,而Hibernate则是主流的对象关系映射(ORM)框架。...

Global site tag (gtag.js) - Google Analytics