我们如何使用HAProxy实现单机200万SSL连接
|
通过 Ganglia 可以监测 HAProxy 机器上一些重要参数.
以下是通过通过负载测试找到的已知限制. 700k TCP 连接, 50k 发送包数量,60k 接收包数量, 10-15MB 发送及接收的字节数, 14-15G 内存峰值, 7MB 带宽. 所有这些值都是基于每秒数据 HAProxy Nbproc 最初,当我们开始测试 HAProxy 时,发现使用 SSL 情况下,CPU 很早就到了瓶颈,而每秒请求数都很低. 在使用 top 命令后,发现 HAProxy 只使用 1 个 CPU 核. 而我们还有 15 个以上的核没用. 它被称为 nbproc,具体设置请看这篇文章 [8]: 使用 AB 进行压力测试当开始负载测试之旅时,我们不清楚应该测量的指标和需要达到的目标. 最初,我们只有一个目标:通过改变所有下面提到的参数来找到临界点.
我保留了各种负载测试结果的表格. 总而言之,做了 500 多次测试,以达到最终的效果. 您可以清楚地看到,每次测试都有很多不同的部分. 单客户端问题我们看到客户端正在成为瓶颈,因为我们不断增加每秒的请求数. ab 使用单个核,从文档中可以看出,它不提供使用多核的功能. 上述命令将运行 3 个 ab 客户端击访问同一个 URL. 这有助于我们消除客户端瓶颈. Sleep 及 Times 参数的问题下面是 Ganglia 中的一些参数.让我们简单讨论一下.
我们在 POST 调用中加入了一个 sleep 参数,它指定了服务端发送返回之前需要 sleep 的毫秒数.这将模拟长时间运行的生产环境请求.如果让请求 sleep 20 分钟的话,只需要每秒发出 583 个请求就能达到 700k 并发连接的标准. 此外,我们还在 POST 调用中引入了另一个参数: times.服务器在返回请求时应该在 TCP 连接上写入响应的指定次数,这有助于模拟更多的数据. Apache Bench (AB) 的问题虽然使用 AB 也得到了不少测试结果,但同时也遇到了很多问题.我不会在这里提到所有问题,因为不是这篇文章重点(下面介绍另一个客户端). 我们非常满意从 ab 上获得的结果,但是它不支持在一段时间内生成所需指定的 TCP 连接数.不知何故,我们设置的 sleep 参数在 ab 上无法生效. 虽然在一台机器上可以运行多个 ab 客户端并且可以用工具合并结果,但是在多台客户机上运行此设置对我们来说仍然是一件痛苦的事情.那时我还没有听说过 pdsh [4] 这个工具. 此外,我们也没有关注过超时的问题.在 HAProxy,ab 客户端和服务器上有一些默认的超时设置,我们完全忽略了这些.后文会讲到. 我们一开始就提到通过临界点图来检测系统的上限,但讲了这么多有点偏离了最主要目标.然而,要得到有意义的结果只能着眼于这一点. (编辑:网站开发网_盐城站长网 ) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


