我正在针对 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 达到峰值时出现峰值,然后逐渐回落。

是否有任何工具可以折磨测试和衡量 AD 性能?我们正在考虑对我们的环境进行相当大的扩展(想想数万台计算机),这将在我们的 AD 环境中引发大量事务。
我们怀疑我们需要在我们的核心网络中添加硬件,但我不想盲目购买硬件,要么浪费钱,要么损害用户的性能。
有任何想法吗?我正在考虑一种生成综合交易的工具,但我愿意接受任何建议。
windows active-directory load-testing sizing capacity-planning
我们的办公室互联网通常连接大约 25-30 台计算机。对于即将举行的活动,我们将必须在几天内支持大约 100 个连接(主要是通过无线连接)。我真的很想在活动之前测试这种负载。
有没有办法模拟多个并发无线连接来进行一些负载测试?
我正在使用Virtualbox 4.1.8 虚拟化的 Debian Squeeze 6.0.4 x64 上运行的小型 Java EE 1.7.0 / Tomcat 7.0.26 应用程序进行 HTTP 负载测试基准测试(使用Apache Benchmark和Siege)。计算机主机是 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 下运行,并且即使在负载测试完成后也 …
每当我尝试对在 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
我需要一种方法来重现我们网站不久前经历的突然流量激增,以便有机会保持我们的堆栈正常工作。
我们的负载均衡器在某个时刻报告说每分钟执行大约 35 万个请求,破坏了一切,从操作系统到关闭后端。我尝试研究执行这种突发测试的服务,但似乎在调整测试设置以匹配所需条件时,它只会花费太多。
如何以符合这些条件的方式对我的堆栈进行负载测试?
我有一个正在迁移到一些新硬件的托管环境。我需要远程强调这个新的实现。有没有一种快速而干净的方法来做到这一点?我不需要任何花哨的东西,只需要页面点击量,不需要大量的内容。
谢谢!
我想将 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) 我有一个向 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) 我知道这个问题没有直接的答案 - 取决于规格等。但是您希望服务器处理的同时请求的数量级是多少?目前,我们的服务器在超过 10 个线程同时运行请求后开始真正变慢。这对于普通的 webapp 来说是正常的吗?编辑:我目前不需要建议。我什至不负责与该服务器相关的任何事情。我告诉我的老板,我认为一个简单的网络服务器不能同时处理 10 个以上的线程是不正常的,他说我应该做一个快速调查。
我们的一台戴尔 PowerEdge LCD 显示“CPU 2 机器检查错误”,但我在日志中找不到任何关于 MCE 或“硬件错误”的信息。我清除了消息,但我想通过一些沉重的东西来运行机器,看看我是否可以让它再次绊倒。
我使用了一个无限循环 bash 脚本,在几分钟内执行了 64 次(每个核心一次)。然后我使用一个名为“stress”的程序对 CPU 和内存做同样的事情。我的问题是,在通常可以说“好吧,这台机器很好用”之前,足够的数量是多少?几分钟?一小时?只要 CPU 温度保持正常?
load-testing central-processing-unit stress cpu-usage stress-testing
load-testing ×11
amazon-ec2 ×1
amazon-elb ×1
apache-2.2 ×1
bash ×1
benchmark ×1
cpu-usage ×1
debian ×1
haproxy ×1
high-load ×1
hosting ×1
iis ×1
java ×1
nginx ×1
performance ×1
php ×1
php-fpm ×1
rabbitmq ×1
scaling ×1
sizing ×1
stress ×1
threads ×1
tomcat ×1
virtualbox ×1
web-server ×1
wifi ×1
windows ×1