我正在开发一个类似CDN的项目,我想强调testing我的服务器,这是一个运行在10Gbps VPS上的最小的nginx + nodejs + ubuntu。 我想模拟看起来更像服务器的预期用途:大约10GB的二进制数据由nodejs服务于nginx后面。 与服务器的连接可以是http或https,每个连接都是持久的,每个连接总共需要1MB的块数据,总共需要10-20MB。 一些连接可能在100mbps,低延迟(连接的20%),有些连接可能会低至100-200kbps,砰平时间为500ms(连接的5%)。 我的目标是产生接近10Gbps理论上限的stream量,并尝试监控服务器状态,收集分析数据,以便能够看到我的东西在负载下如何工作。 连接到我的服务器的客户端也是我自己的代码。 在所有的客户端,我想保存日志,然后结合并分析它们,以估计当我的服务器的请求负载合并为理论限制的50%,75%,… 90%,100%,120时,整个系统的总体结果%等。在这些负载期间,我的目标是观察服务器:RAM使用,CPU负载,连接丢失率,validation日志logging(以确保组合的客户端logging匹配服务器logging的结果)。
我的计划是首先在1Gbps服务器上进行testing(在不同地理位置的10-15 x 100mbps服务器上模拟客户端)。 由于我控制客户端,我只是让他们运行某些情况下,并以不同的速度节stream下载,以模拟缓慢的clinets。
如果你需要强调testing这样的设置,你会怎么做? 我的方法有什么问题吗?为什么?
你的方法非常好,我只是build议在现有的线束上添加几个testing场景:
查看4个耐力testing技巧,您需要了解上述技术的更全面的解释。
对于第一轮testing,您可以使用ab – Apache基准testing 。 这是相当可configuration的,其结果是有见地的。
例如, ab -n 100 -c 5 http://localhost/将对ab -n 100 -c 5 http://localhost/运行100个并发级别为5的连接。