ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 关于TCP网络连接的短连接和长连接

关于TCP网络连接的短连接和长连接

原创 Linux操作系统 作者:davidyu720 时间:2019-05-09 11:54:05 0 删除 编辑

有一个JAVA系统,系统的几个进程间有大量的数据传送,基于的是TCP连接。这个系统在小压力的情况下工作正常,但是处理能力一直上不去。最近对这个系统进行压力测试,在进程间发送数据时出现exception : Address already in use: connect。
查发送数据的源代码,发现发送者采用的是短连接模型--每次发送时,都重新与接收者建立新连接。

于是立即修改发送侧代码为长连接方式,并重做压力测试,结果没有再出现这个异常,而且CPU占用率也降下来了一截。

如果理解TCP/IP连接的原理,对于在短连接方式下异常出现的原因也就不足为怪了:每次发送时,client都建立连接,发送完毕就断开连接。断开连接是要花一些时间的。如果再次发起连接太快,可能会由于资源未准备好而失败。

测试时是在WINDOWS平台上进行的,于是从MSDN上贴了一段错误解释:
connect()
WSAEADDRINUSE The socket's local address is already in use and the socket was not marked to allow address reuse with SO_REUSEADDR. This error usually occurs when executing bind, but could be delayed until this function if the bind was to a partially wildcard address (involving ADDR_ANY) and if a specific address needs to be committed at the time of this function.


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9844649/viewspace-580147/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-08-18

  • 博文量
    200
  • 访问量
    150626