开发者社区> 问答> 正文

ECS服务器socket上限问题

打算把服务器弄到阿里云上面来,进行测试的时候结果和预想的差很多:


    在我们的机器上随便跑个7W socket(并发的),在阿里云上使用相同的优化方案和配置。结果云上只能跑到2W,就会出现大量的心跳超时,导致client关闭。
    查看服务端DEBUG信息所有的socket都是正常中断,也就是说不是程序的问题。



上配置:


CPU 内存 带宽
阿里ECS 4核
8G 10M
本地主机 4核8G 100M

使用率:


socket数量(概数) CPU使用(四个核,百分比) 内存消耗 带宽使用(峰值)
阿里ECS 14911 10.2、4.3、4.3、4.3 784M 上行:147.48KB/s,下行:204.49KB/s
本地主机 63282 36.1、23.0、22.4、14.82887M 上行:635.94KB/s,下行:842.92KB/s


  正常情况,msg queue是0,如图


    


socket出现异常:


    



现在出现大量的坏消息,socket消息堵在这里了,之前遇到过相同问题,带宽不够、服务器没有调优、服务器性能太差都会出现。


一模一样的调优,差距这么大。根据配置信息,带宽应该够,硬件配置也可以。


云服务器的安全策略都置空了,云盾进程也干掉了。不知道现在问题出在哪里?想问下阿里的云服务器由其它限制吗?

PS:
2015年12月17日 ,补充阿里云IO监控结果
   命令: iostat -x -k
vmstat



socket大量断开时状态:


avg-cpu:  %user   %nice %system %iowait  %steal   %idle
                  0.25    0.00    0.07         0.07      0.05      99.56


Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
xvda              0.00     0.97      0.31    2.23     3.12    14.13    13.60     0.01        2.19    3.55    2.01     1.27     0.32
xvdb              0.00     0.00      0.00    0.00     0.01     0.00    14.83     0.00         1.32    1.32    0.00     0.87     0.00



procs ----------------memory---------------  ---swap-- -----io---- -system-- ------cpu-----
r   b   swpd          free   buff      cache     si   so     bi    bo       in   cs    us sy id wa st
4  0      0      5280132 238580 630364    0    0     1     4        11   17    0  0 100  0  0

从上面看io没问题。


PS:阿里内网测试


client 机器:使用上面4核配置的阿里云主机。
server 机器:



CPU 内存 带宽
阿里ECS
(server主机)
2核
4G 内网测试
这个没意义








本次测试server机器成功达到6.5W 个tcp长连接并行

使用率:





socket数量 CPU使用(n个核,百分比) 内存消耗 内网带宽使用
阿里ECS,client 64029 18.5、10.0、3.0、6.21044M 上行:913.33 KB/s,下行:427.29 KB/s
阿里ECS,server 64029 48.0、37.32867M 上行:531.32 KB/s,下行:771.35 KB/s


监控的时候带宽不可能做道两台机器完全同步检测,所以两个的结果略有不同。
还是贴一下流量监控结果吧,两台机器都是使用bwm-ng检测。
其中网卡eth0 是内网网卡,eth1是外网网卡。


   server:

/         iface                   Rx                   Tx                Total
  ==============================================================================
             eth0:         771.35 KB/s          531.32 KB/s         1302.67 KB/s
             eth1:           1.78 KB/s            0.45 KB/s            2.23 KB/s
               lo:           0.00 KB/s            0.00 KB/s            0.00 KB/s
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


client:

\         iface                   Rx                   Tx                Total
  ==============================================================================
             eth0:         427.29 KB/s          913.33 KB/s         1340.62 KB/s
             eth1:           1.69 KB/s            0.45 KB/s            2.14 KB/s
               lo:           0.00 KB/s            0.00 KB/s            0.00 KB/s
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



成功找到问题:
       对于做服务器的主机来说,阿里云的外网带宽并不能达标,起码单台主机(不管你购买的带宽是多少)不能承受高于2W的socket;但是内网并没有这个问题。


不知道是不是阿里对这方面做了技术限制。


@阿里技术 等回复ing。。。



展开
收起
winext 2015-12-16 17:07:38 15711 0
5 条回答
写回答
取消 提交回答
  • ReECS服务器socket上限问题
    请问楼主这个问题,最后是怎么解决的呢。我现在也遇上一些问题,长连接socket 数量一直上不去。
    2017-08-07 16:58:15
    赞同 展开评论 打赏
  • curl -s http://share.teemo.name/ulimit.sh | sh
    2015-12-17 09:14:16
    赞同 展开评论 打赏
  • 我が道を逸れれば、天が笑う!
    跟本地肯定不能比哎,且不说带宽差异太大,本地是4核物理CPU,ECS是4核虚拟化CPU,再加上内网和公网巨大的通信开销差别。。。

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

    LZ,你可以用sysbench之类的工具测试一下系统各个部分的性能,包括CPU、IO、内存、网络,不过我估计相差最大的还是网络环境,即使是阿里云的ECS主机之间的内网通信开销,也可能要比你自己本地的内网开销大,毕竟咱们是不清楚阿里云内网的拓扑结构的

    2015-12-17 08:43:07
    赞同 展开评论 打赏
  • ReECS服务器tcp数量有限制吗?
    是不是磁盘IO 的区别呢
    2015-12-17 00:52:27
    赞同 展开评论 打赏
  • ReECS服务器tcp数量有限制吗?


    两张图片

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

    回 2楼孤城的帖子
    恩,我也知道没有可比性,可是云的情况到底怎么样,有没有具体的参数呢?
    2015-12-16 17:08:39
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何运维千台以上游戏云服务器 立即下载
网站/服务器取证 实践与挑战 立即下载
ECS快储存加密技术 立即下载