标签: load-testing

php-fpm 和 nginx 的奇怪性能波动

我正在针对 Web 服务运行负载测试。这是一个运行在 php-fpm 和 nginx 上的 php 应用程序,带有 fastcgi。有一个 MySQL 后端仅用于小型读取。

我总是看到一个奇怪的模式:性能稳定并随着流量的增加而可预见地增加,但在高峰期变得不稳定:CPU 使用率不断波动。

这是我看到的性能模式(用 可视化nmon):

在此处输入图片说明

下降总是与我的负载测试工具 - locust.io - 在它完成上升到我为测试设置的峰值水平时的短暂暂停同时发生。

我的假设:在这短暂的时刻,php-fpm主人认为负载已经消失并开始杀死工人;当流量在片刻之后全面恢复时,它无法足够快地响应。

我不太明白的是为什么它永远无法完全回到它的摆动中:我看到负载均衡器后面的所有 4 个应用程序服务器无限期地出现这种波动。

这是我的 php-fpm 池配置:

[www]
user = www-data
group = www-data
listen = /var/run/php5-fpm.sock
listen.group = www-data
listen.mode = 0660
pm = dynamic
pm.max_children = 100
pm.start_servers = 40
pm.min_spare_servers = 40
pm.max_spare_servers = 100
pm.max_requests = 10000
Run Code Online (Sandbox Code Playgroud)

我已经确认这不是数据库的问题 - 在将 MySQL 读取从站的数量增加一倍后,我看到了完全相同的行为。

这是什么原因造成的?我怎样才能阻止它?

编辑:

这是一个图表,展示了我所看到的。请注意,故障率通常会在 user_count 达到峰值时出现峰值,然后逐渐回落。

user_count vs fail_ratio

php performance nginx load-testing php-fpm

6
推荐指数
1
解决办法
632
查看次数

Active Directory 的负载测试工具?

是否有任何工具可以折磨测试和衡量 AD 性能?我们正在考虑对我们的环境进行相当大的扩展(想想数万台计算机),这将在我们的 AD 环境中引发大量事务。

我们怀疑我们需要在我们的核心网络中添加硬件,但我不想盲目购买硬件,要么浪费钱,要么损害用户的性能。

有任何想法吗?我正在考虑一种生成综合交易的工具,但我愿意接受任何建议。

windows active-directory load-testing sizing capacity-planning

5
推荐指数
1
解决办法
2796
查看次数

我可以模拟并发无线连接进行负载测试吗?

我们的办公室互联网通常连接大约 25-30 台计算机。对于即将举行的活动,我们将必须在几天内支持大约 100 个连接(主要是通过无线连接)。我真的很想在活动之前测试这种负载。

有没有办法模拟多个并发无线连接来进行一些负载测试?

wifi load-testing

5
推荐指数
1
解决办法
5126
查看次数

Virtualbox HTTP 负载测试,主机 CPU 过载问题

我正在使用Virtualbox 4.1.8 虚拟化的 Debian Squeeze 6.0.4 x64 上运行的小型 Java EE 1.7.0 / Tomcat 7.0.26 应用程序进行 HTTP 负载测试基准测试(使用Apache BenchmarkSiege)。计算机主机是 Ubuntu 11.10 x64。

我在 Tomcat 中修改了这些参数server.xml

<Connector 
    port="8080" 
    protocol="HTTP/1.1"
    connectionTimeout="200000"
    redirectPort="8443" 
    acceptCount="2000"
    maxThreads="150"
    minSpareThreads="50" />
Run Code Online (Sandbox Code Playgroud)

在服务器上执行的应用程序大约需要 300 毫秒。

这个应用程序运行良好,直到达到一定数量的并发连接,例如:

ab -n 500 -c 150 http://xx.xx.xx.xx:8080/myapp/
ab -n 1000 -c 50 http://xx.xx.xx.xx:8080/myapp/
siege -b -c 100 -r 20 http://xx.xx.xx.xx:8080/myapp/ 
Run Code Online (Sandbox Code Playgroud)

socket connection timed out发生了很多事情,这使主机处理器完全过载(但 VM 内的 CPU 负载是正常的)。

htop在主机上执行一个操作,我可以看到 Virtualbox 进程在 300% CPU 下运行,并且即使在负载测试完成后也 …

debian tomcat java virtualbox load-testing

5
推荐指数
1
解决办法
1160
查看次数

带有 ApacheBench 的 EC2 负载均衡器背后的负载测试站点

每当我尝试对在 EC2 上进行负载平衡的站点进行负载测试时,我都会收到以下消息:

ab -n 20 -c 20 http://www.somesite.com/

Benchmarking www.somesite.com (be patient)...Send request failed!
apr_socket_recv: Connection reset by peer (54)
Run Code Online (Sandbox Code Playgroud)

在没有负载均衡器的情况下托管在 EC2 上的任何站点都可以成功进行负载测试,所以我认为它与我配置的安全组无关。

AWS EC2 负载均衡器是否默认阻止此类请求?如果是这样,它如何区分基于 AB 和普通浏览器的 http 请求?

load-testing load-balancing amazon-ec2 amazon-web-services amazon-elb

4
推荐指数
1
解决办法
3965
查看次数

每分钟 350,000 个请求的负载测试

我需要一种方法来重现我们网站不久前经历的突然流量激增,以便有机会保持我们的堆栈正常工作。

我们的负载均衡器在某个时刻报告说每分钟执行大约 35 万个请求,破坏了一切,从操作系统到关闭后端。我尝试研究执行这种突发测试的服务,但似乎在调整测试设置以匹配所需条件时,它只会花费太多。

如何以符合这些条件的方式对我的堆栈进行负载测试?

load-testing high-load

4
推荐指数
1
解决办法
983
查看次数

对托管的 IIS 服务器进行压力测试

我有一个正在迁移到一些新硬件的托管环境。我需要远程强调这个新的实现。有没有一种快速而干净的方法来做到这一点?我不需要任何花哨的东西,只需要页面点击量,不需要大量的内容。

谢谢!

iis hosting load-testing

3
推荐指数
1
解决办法
1411
查看次数

ApacheBench 结果到文件

我想将 linux 上的 ApacheBench (ab) 工具保存到一个文件中。当我使用 -v 2 运行它时,它会在我的 ssh 窗口中显示一些结果。如何将这些数据移动到文件中并确保它不再显示在 ssh 上?我试过 > file.txt 2>&1 但它不起作用并且仍然在我的 ssh 窗口中显示数据。

我用:

ab -n 10000 -c 200 http://mywebsite.com > file.txt 2>&1
Run Code Online (Sandbox Code Playgroud)

bash load-testing apache-2.2 benchmark

3
推荐指数
1
解决办法
9660
查看次数

RabbitMQ HAProxy 配置

我有一个向 RabbitMQ 发送消息的 API。

我在 HAProxy 后面有一个高可用性 RabbitMQ 集群。

当我对 API 进行负载测试时,我开始看到很多这样的内容:

Recovering from a network failure... Exception in the reader loop: AMQ::Protocol::EmptyResponseError: Empty response received from the server.

在我的独角兽日志中。

如果我通过 haproxy 直接连接到 RabbitMQ,我不会。我哪里出错了,我的 haproxy 配置如下所示:

global
  log 127.0.0.1   local0
  log 127.0.0.1   local1 notice
  #log loghost    local0 info
  maxconn 4096
  #debug
  #quiet
  user haproxy
  group haproxy

defaults
  log     global
  mode    http
  retries 3
  timeout client 50s
  timeout connect 10s
  timeout server 50s
  option dontlognull
  option forwardfor
  option httplog
  option redispatch …
Run Code Online (Sandbox Code Playgroud)

load-testing load-balancing haproxy rabbitmq

3
推荐指数
1
解决办法
2万
查看次数

您希望网络服务器处理多少个并发请求

我知道这个问题没有直接的答案 - 取决于规格等。但是您希望服务器处理的同时请求的数量级是多少?目前,我们的服务器在超过 10 个线程同时运行请求后开始真正变慢。这对于普通的 webapp 来说是正常的吗?编辑:我目前不需要建议。我什至不负责与该服务器相关的任何事情。我告诉我的老板,我认为一个简单的网络服务器不能同时处理 10 个以上的线程是不正常的,他说我应该做一个快速调查。

load-testing scaling web-server web-applications threads

1
推荐指数
1
解决办法
2万
查看次数

在宣布正常之前,我应该对 CPU 和内存进行多长时间/多难的压力测试?

我们的一台戴尔 PowerEdge LCD 显示“CPU 2 机器检查错误”,但我在日志中找不到任何关于 MCE 或“硬件错误”的信息。我清除了消息,但我想通过一些沉重的东西来运行机器,看看我是否可以让它再次绊倒。

我使用了一个无限循环 bash 脚本,在几分钟内执行了 64 次(每个核心一次)。然后我使用一个名为“stress”的程序对 CPU 和内存做同样的事情。我的问题是,在通常可以说“好吧,这台机器很好用”之前,足够的数量是多少?几分钟?一小时?只要 CPU 温度保持正常?

load-testing central-processing-unit stress cpu-usage stress-testing

0
推荐指数
1
解决办法
576
查看次数