一分钟了解阿里云产品:性能测试通过SLB保持百万级TCP连接C1M

一直以来,对SLB的转发性能到底如何比较好奇。于是,最近开了一个测试用的SLB来玩玩C1M,即我们能不能通过一个SLB来保持1百万个TCP长连接?

 

 

我的测试配置如下:

 

  • 1个内网SLB,端口配置8000->8001, TCP按最小连接数转发。
  • 3个后端server ECS,配置4核4G ram。
  • 17个client ECS,配置1核2G ram。
  • server是一个简单的echo service, client每秒向SLB发起500个TCP连接请求,建连后每隔20秒向server发送一个"hello"字符串,server收到后将"hello"发回。连接一旦建立,双方都不close, 会被一直保持住。
  • server和client均使用Erlang实现。

 

 

配置完成让我们来说说测试步骤和测试结果:

 

首先在3个ECS上启动listen在8001端口的server。

然后在17个client ECS上分别启动client,每个client通过SLB的8000端口和后端server建立60000个TCP连接 (尽量用完64k个端口)。

 

测试结果见图,稳定保持百万级TCP连接, 下图只显示了960k (由于SLB的监控数据更新得太慢,我们没有等到它刷新完毕)。最终的峰值是17*60=1020k。

 一分钟了解阿里云产品:性能测试通过SLB保持百万级TCP连接C1M

3台后端服务器上分别保持了360k, 300k和360k连接。之所以不平均是因为我们一开始想试试只用两台4核4G的ECS能不能hold住C1M,走到720k的时候发现内存不够用了,于是新加入了第三台。由于使用的最小连接数转发,新增的300k连接都全部被分到了这个新加入的节点上。从下图可以看到4核CPU处理C360k无压力,但4G内存已接近oom。

 一分钟了解阿里云产品:性能测试通过SLB保持百万级TCP连接C1M

17台测试客户端各自的统计数据 (其中8台,其余的类似)。

一分钟了解阿里云产品:性能测试通过SLB保持百万级TCP连接C1M

 

综上可以得出结论:我们可以通过一个SLB来保持1百万(甚至更多的)TCP长连接。

 

如果您想仔细研究负载均衡这方面问题,请访问:https://bbs.aliyun.com/read/228428.html

 

 

 

 

 

上一篇:hadoop 异常记录 ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times


下一篇:org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times 异常的解决