开发者社区> 问答> 正文

近期在阿里云上遇到的一个诡异问题

  发出来给大家看看,我比较怀疑是阿里云的网卡问题,但是没有什么依据


  在 windows 上 我用 boost.asio (iocp) 写了一个单线程异步 tcp server,频繁的遇到一个信号灯超时的问题 (semaphore timeout),同时在线170左右长链接,数据量小于1K,本来我们怀疑是自己代码的问题,但是排查过一轮后并没发现什么严重的逻辑谬误和明显的系统冲突,于是msdn之,发现 windows 有类似的补丁,接着是我们升级到了 windows server 2012。可是问题依旧,前几天,我们把这台主机放入内网,再用数台云主机做转发,这个严重的问题居然莫名其妙的消失了,当然也没有完全消失,但是错误率下降得非常明显,基本只有一两例,还不能排除是客户自己的网络问题。


  这个问题我不确定到底是谁的问题,但我比较倾向是虚拟化的网卡问题,因为内网和外网是两个不同的网卡,也有可能是我们没掌握好 boost.asio,还在加紧排查和测试中


  MSDN: http://support.microsoft.com/kb/325487


  有明白的同学请不吝赐教


  



   PS: 客服不要给我打电话,谢谢!

展开
收起
碧血微剑 2015-02-26 13:36:09 7786 0
3 条回答
写回答
取消 提交回答
  • Re近期在阿里云上遇到的一个诡异问题
    我近期也是遇到这样问题,IOCP写的游戏服务器,公司内部机器各种压力测试都没问题,并发10000测试连续几小时没问题。移到阿里云上,server2012,当天新系统提示更新,我忽略了,环境部署好之后,只上几个测试玩家,程序就出现莫名其妙的死循环。开始怀疑自己程序问题,可是各种内部压力测试,都无法在内部机器重现。但是压力测试放到阿里云后,立即重现,windbg附加调试信息结果 KERNELBASE!GetQueuedCompletionStatus 卡死。多次本地压力测试无问题后,怀疑可能是系统补丁没更新。然后更新系统补丁后,重启云服务器,一切正常了,压力测试也能跑过。不过跑了2天左右,又一个程序莫名其妙的死循环,windbg附加调试反馈信息和之前一样。 ,后来公司就打算换机房物理服务器测试,没有任何问题了。年初也租用了一个阿里云服务器经典网络的跑过同样测试没遇到过任何问题,这次用的是专用网络就遇到这种问题。实在是百思不得其解。
    2017-09-17 17:45:42
    赞同 展开评论 打赏
  • Re近期在阿里云上遇到的一个诡异问题
    楼主 我最近和你遇到了同样的问题  使用asio的tcpserver 经常出现信号灯超时问题 楼主这个问题后来解决了吗 是什么原因导致的
    2015-11-02 10:42:56
    赞同 展开评论 打赏
  • Re近期在阿里云上遇到的一个诡异问题
    对了,我们同时还有其他服务,MySQL Client 和 UDP Server ,这两个占的流量比较大,几乎占了90%

    -------------------------

    回 2楼(巴尔少侠) 的帖子
    后来我们升级了云主机:

    1、Windows Server 2008 升级到 2012
    2、升级了CPU,内存翻倍
    3、带宽升级到100M

    以及:

    1、拒绝使用非标准库的线程跑asio
    2、业务和网络线程分离

    然后这个问题基本就不会出现了。

    -------------------------

    回 2楼(巴尔少侠) 的帖子
    那时我们遗留的代码,是在主线程 tick 里用 io_service.poll() 运行的,后来给 io_service 单独开了一个线程
    2015-02-26 13:47:25
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Android插件化-从入门到"放弃" 立即下载
增长的真相暨金数据新产品发布 立即下载
白帽子的成长独白-消失的那几年 立即下载