TCP服务端,海外用户的问题。

gnorth 2015-10-28 12:30:33
TCP短连接,大约有800-1000个活跃客户端,以后可能会继续增长,其中有50%以上是海外线路。

每一个客户端每隔1分钟需要跟服务端通信一次,一次有数条请求,整个流程正常情况下会在5s-10s内完成,都是一请求一应答,没有IO并发。

目前大概每1分钟大约存在10-15个超时连接(检测到之后强制关闭),超时时间是30秒。

IOCP模型,4个工作线程,单独的一个线程在检测超时,但工作线程对winsock的任何操作以及超时关闭连接操作,都是收拢到单线程了(我采用了一个独立的消息线程来调用winsock api,把调用GetQueuedCompletionStatus的4个线程作为业务逻辑线程来使用),不会存在同步问题。

可以确定的是服务端带宽是足够的,大陆IP没有任何问题,目前所有超时连接,都是港台IP,客户端有重连机制。

从日志可以看到,所有超时的连接,分为两类:
1、已经连上之后,但是服务端并没有收到任何数据(也就是连上之后可能就已经是死连接了)。
2、在断开连接时(DisconnectEx 超时)

我想知道这是什么原因,如果是TCP内部的问题,有没有办法补救,因为,重连会导致服务端和数据库的一些额外开销,如果考虑做海外分流,在必须统一数据的前提下,那么数据库服务端,应该找什么服务器来承载?
...全文
198 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2015-10-29
  • 打赏
  • 举报
回复
应该还是网络问题,运营商对海外的网络有延时等。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧