大量close_wait以及调用ip地址异常获取方法引发的故障

大量close_wait以及调用ip地址错误获取方法引发的故障
记录一下这几天帮助兄弟项目组解决的几个问题

工程:网关服务器,业务逻辑少,操作不费时
问题:大量的Close_wait,访问速度较慢

分析&解决:
1、close_wait是TCP/IP协议中被动关闭方收到Fin后没有发送Fin导致
  项目采用了mina框架,服务器被动关闭时会生成一个异常,调用exceptionCaught()方法,
  在该方法中,服务器调用关闭方法session.close(false);false的意思是先发送数据,等数据   发送完了再关闭。通常情况下这是一个正常的流程,但是在高并发访问的情况下,可能生成大量Close_wait。如果情况允许的话,把false改成true就好了。通常情况下,改成true是没有问题的。

2、项目中获取ip的方法有问题:
  ip = ((InetSocketAddress)(session.getRemoteAddress())).getHostName();

  此方法会先通过域名服务器获取远程客户段的域名,域名无法获得的情况下再获取ip,在域名服务器不稳定的情况下,通常耗时好几百毫秒。如果没有必要的话,可以将这个代码直接修改为:
	InetSocketAddress accountAddress = (InetSocketAddress) session
				.getRemoteAddress();
	
		String accountIp = accountAddress.getAddress().getHostAddress();