我有一个非常好的nginx配置,我试图在10秒内测试 1000个请求的负载,以便通过https连接从nginx加载index.html页面。 对于所有1000个样本,延迟和连接时间是一致的。但是前几个样本的响应时间是可以的,但对于剩下的样本来说真的非常糟糕。我正在附上样本。请看第一个截图。您可以看到条目是一致的。 但是在第二个屏幕截图中,您可以发现响应时间越来越大。 这可能是什么原因?????
是因为硬件端口限制(32000 - 61000)吗?但 对于虚拟托管计算机,我不允许编辑它。
虚拟托管计算机是否有任何文件描述符开放限制? 你可以看到我设置ulimit -a和-n大约为200000. Will 这项工作适用于虚拟机吗?
我是否必须在nginx配置中进行调整才能进行调整 响应时间一致吗?
我正在尝试这个HTTPS连接,是不是每个都是b / c 连接花费时间在加密和系统忙于CPU 周期?我只想了解问题是否存在 硬件/软件水平?
我的硬件是虚拟托管的。以下是配置
这是nginx配置:
server {
listen 80;
server_name xxxx;
# Strict Transport Security
add_header Strict-Transport-Security max-age=2592000;
rewrite ^/.*$ https://$host$request_uri? permanent;
}
server {
listen 443 ssl;
server_name xxxx;
location / {
try_files $uri $uri/ @backend;
}
## default location ##
location @backend {
proxy_buffering off;
proxy_pass http://glassfish_servers;
proxy_http_version 1.1;
proxy_set_header Connection "";
# force timeouts if the backend dies
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
#proxy_redirect off;
# set headers
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/xxxx.key;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 10m;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
}
这是我收集的汇总报告:
答案 0 :(得分:1)
也许这不是nginx问题。根据您配置JMeter的方式,负载可能远高于您的预期。
我建议如下:因为每10秒1000个请求是100个请求/秒,
使用
添加线程组为JMeter提供足够的Java HEAP空间 - 根据您的操作系统,在jmeter
或jmeter.bat
文件中找到以下行:
HEAP="-Xms512m -Xmx512m"
并将值调整为以50%开始,以物理RAM总量的80%结束
运行JMeter in non-GUI mode,禁用所有侦听器,如:
jmeter -n -t /path/to/your/testplan.jmx -l /path/to/testresults.jtl
您还可以查看JMeter Plugins项目,它提供ie PerfMon Metrics Collector,这样您就可以在负载测试期间监控服务器运行状况,并使用多个扩展图表来显示您的测试或Taurus,它是JMeter和其他负载测试工具的包装器,可简化配置和执行过程,并使结果分析更容易。