Web Server服务器压力测试的研究

记录一下自己的webserver在webbench下的测试。

1、首先用webbenchfork了1000个子进程模拟1000个客户端对服务器进行30s的并发请求,实验结果如下: QPS=8107,所有连接请求都得到了响应。

2、接着模拟3000个客户端并发30s,出现了1次failed,有一次连接请求没有得到响应。说明该种情况已经触摸到了服务器的瓶颈。

3、接着模拟3000个客户端并发180s,出现了1920次failed,有1920个连接请求没有得到响应。说明服务器在面对较长时间并发时性能下降。

4、考虑到服务器的性能瓶颈可能是由于HPPT1.0无法建立HTTP长连接,导致每次请求都得经历TCP连接的三握四挥,极大地影响了服务器的处理能力,于是改用HTTP1.1进行同条件下的压测。

但webbench的http1.1的Connection字段默认为close而不是keep-alive没有开启长连接,而且因为1.1增加了许多字段,导致处理的每秒字节数大量提高,同时由于IO耗时增加,导致返回的pages数量下降,QPS下降到只有5500左右。

5、模拟5000clients资源不足,只能fork到4549个子进程。

6、分析服务器性能瓶颈的原因:(1)服务器的设计框架是单Reactor+线程池模式,其中的Reactor所在的主线程负责监听并处理Accept和IO事件,线程池负责根据读事件的结果解析HTTP请求协议做出响应,通知主线程处理写事件。(2)webbench进行服务器压测的场景,包含了大量的Accept事件(短连接所致),同时每个Accept事件会伴随着一个读事件和一个写事件。

所以将这三个时间的处理放在主Reactor中,会造成服务器的性能瓶颈。为此计划将该服务器的设计模式改为主从Reactor模式+线程池,主Reactor只负责Accept,多个从Reactor负责处理读写事件。

修改代码中,修改完成打算进行压测。

参考文章:

muduo的性能测试引发的思考_muduo库的webbench测试-CSDN博客

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
服务器进行压力测试有多种方法,以下是其中的一些: 1. 使用 Apache JMeter:这是一个开源的 Java 应用程序,可以用于测试 Web 应用程序或服务器的性能和负载。它支持多种协议和功能,如 HTTP、FTP、JDBC 等。使用 JMeter 可以模拟多个用户并发访问服务器,并收集响应时间、吞吐量等数据,从而评估服务器的性能。 2. 使用 ab 命令行工具:ab 是 Apache HTTP 服务器自带的命令行工具,可以模拟多个并发用户向服务器发送请求,并输出每个请求的响应时间、吞吐量等数据。例如,使用以下命令可以向服务器发送 1000 个并发请求,每个请求重复 10 次: ``` ab -n 1000 -c 10 http://yourserver.com/ ``` 3. 使用 loadtest 工具:loadtest 是一个基于 Node.js 的命令行工具,可以用于测试 Web 应用程序的负载和性能。它支持多种协议和功能,如 HTTP、HTTPS、WebSocket 等。使用 loadtest 可以模拟多个并发用户向服务器发送请求,并输出每个请求的响应时间、吞吐量等数据。 4. 使用压力测试工具:还有其他一些商业和开源的压力测试工具,如 LoadRunner、Gatling、Locust 等。这些工具可以提供更复杂的测试场景和更详细的测试报告,但通常需要花费更多的时间和资源来配置和运行。 在进行压力测试时,需要注意以下几点: - 在测试之前,确保服务器已经优化并配置好了,以确保测试结果准确。 - 在测试期间,监控服务器的资源使用情况,如 CPU、内存、网络带宽等,以便及时发现问题。 - 逐步增加并发用户量,以模拟真实的负载情况,并记录每个并发用户的响应时间、吞吐量等数据。 - 分析测试结果,找出瓶颈和优化点,并进行优化和再测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值