Nginx应用案例分享:压力测试

在运维工作中,压力测试是一项非常重要的工作。比如在一个网站上线之前,能承受多大访问量、在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验。

但是,在压力测试中存在一个共性,那就是压力测试的结果与实际负载结果不会完全相同,就算压力测试工作做的再好,也不能保证100%和线上性能指标相同。面对这些问题,我们只能尽量去想方设法去模拟。所以,压力测试非常有必要,有了这些数据,我们就能对自己做维护的平台做到心中有数。

目前较为常见的网站压力测试工具有webbench、ab(apache bench)、tcpcopy、loadrunner

软件名称 简介 优缺点
webbench
由Lionbridge公司开发,主要测试每秒钟请求数和每秒钟数据传输量,同时支持静态、动态、SSL

部署简单,静动态均可测试。适用于小型网站压力测试(单例最多可模拟3万并发)
ab(apache bench)
Apache自带的压力测试工具,主要功能用于测试网站每秒钟处理请求个数

多见用于静态压力测试,功能较弱,非专业压力测试工具
tcpcopy 基于底层应用请求复制,可转发各种在线请求到测试服务器,具有分布式压力测试功能,所测试数据与实际生产数据较为接近
后起之秀,主要用于中大型压力测试,所有基于 tcp的packets均可测试

loadrunner 压力测试界的泰斗,可以创建虚拟用户,可以模拟用户真实访问流程从而录制成脚本,其测试结果也最为逼真 模拟最为逼真,并可进行独立的单元测试,但是部署配置较为复杂,需要专业人员才可以。

下面,笔者就以webbench为例,来讲解一下网站在上线之前压力测试是如何做的。

安装webbench

#wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz
#tar zxvf webbench-1.5.tar.gz
#cd webbench-1.5
#make && make install

进行压力测试

并发200时

# webbench -c 200 -t 60 http://blog.luwenju.com/index.php

参数解释:-c为并发数,-t为时间(秒)

Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://blog.luwenju.com/index.php
200 clients, running 60 sec.
Speed=1454 pages/min, 2153340 bytes/sec.
Requests: 1454 susceed, 0 failed.

当并发200时,网站访问速度正常

并发800时

#webbench -c 800 -t 60 http://blog.luwenju.com/index.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://blog.luwenju.com/index.php
800 clients, running 60 sec.
Speed=1194 pages/min, 2057881 bytes/sec.
Requests: 1185 susceed, 9 failed.

当并发连接为800时,网站访问速度稍慢

并发1600时

#webbench -c 1600 -t 60 http://blog.luwenju.com/index.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://blog.luwenju.com/index.php
1600 clients, running 60 sec.
Speed=1256 pages/min, 1983506 bytes/sec.
Requests: 1183 susceed, 73 failed.

当并发连接为1600时,网站访问速度便非常慢了

并发2000时

#webbench -c 2000 -t 60 http://blog.luwenju.com/index.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://blog.luwenju.com/index.php
2000 clients, running 60 sec.
Speed=2154 pages/min, 1968292 bytes/sec.
Requests: 2076 susceed, 78 failed.

当并发2000时,网站便出现“502 Bad Gateway”,由此可见web服务器已无法再处理用户访问请求

总结:

1、压力测试工作应该放到产品上线之前,而不是上线以后

2、测试时尽量跨公网进行,而不是内网

3、测试时并发应当由小逐渐加大,比如并发100时观察一下网站负载是多少、打开是否流程,并发200时又是多少、网站打开缓慢时并发是多少、网站打不开时并发又是多少

4、 应尽量进行单元测试,如B2C网站可以着重测试购物车、推广页面等,因为这些页面占整个网站访问量比重较大

时间: 2024-10-08 01:26:16

Nginx应用案例分享:压力测试的相关文章

记录一次自己对nginx+fastcgi(fpm)+mysql压力测试结果

nginx + fastcgi(fpm) 压力测试: CentOS release 5.9 16核12G内存 静态页面: 并发1000,压测200秒,测试结果: 系统最大负载5.47 成功响应: 2563065, 502:0, 失败:0 PHP页面(对mysql进行一次带索引的查询,数据库记录500条): 并发1000,压测200秒,测试结果: 系统最大负载15.66 成功响应: 114368, 502:712, 失败:58715 并发200,压测200秒,测试结果: 系统最大负载25.81 成

Nginx服务器防止被压力测试

最近经常用人帮忙做压力测试,用webbech或者ab等一些工具模拟并发压服务器,若服务器没有限制连接数或带宽,服务器很容易被压跨.cat nginx.conf…http {…limit_conn_zone $binary_remote_addr zone=one:10m;#如果在1.1.8之后版本还用语法:limit_zone name $variable size,会报警告nginx: [warn] the“limit_zone” directive is deprecated, use th

nginx优化php-fpm优化 压力测试达到每分150万访问量webbench网站压力

webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.编译安装:引用wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gztar zxvf webbench-1.5.tar.gzcd webbench-1.5make && make install 3.使用:引用webbench -c 10000 -t

Nginx使用webbench进行压力测试

在运维工作中,压力测试是一项非常重要的工作.比如在一个网站上线之前,能承受多大访问量.在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验. 但是,在压力测试中存在一个共性,那就是压力测试的结果与实际负载结果不会完全相同,就算压力测试工作做的再好,也不能保证100%和线上性能指标相 同.面对这些问题,我们只能尽量去想方设法去模拟.所以,压力测试非常有必要,有了这些数据,我们就能对自己做维护的平台做到心中有数. 目前较为常见的网站压力测试工具有webbench.ab(apache ben

阿里云服务器下配置Nginx+PHP+Mysql+webbench(压力测试)+iftop(监控流量)

注意:在阿里云服务器下不用配置iptables 1.关闭SELINUX vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq #保存退出 shutdown -r now #重启系统 2.使用yum安装wget yum install wget #安装下载工具 wget http://www.atomicorp.com/installers/atomic

记一次压力测试和对nginx/tomcat配置的调整

原文地址:还没找到 是一个web系统,前端使用nginx做为反向代理,处理https,并将请求转发给后端的tomcat服务. 压力测试工具选择了jmeter. 首先简单介绍一下jmeter. 它是apache的一个开源项目,基于java swing开发的GUI界面. jmeter提供了许多高级的功能,但我们仅仅使用了jmeter最简单的功能.在简单的jmeter使用中,我们涉及到这么几个概念:测试计划,线程组,测试任务,和Listener.看下面的图:  在一个名为“测试”的测试计划下, 我们建

Nginx压力测试工具之WebBench

Nginx压力测试工具之WebBench 在Apache中有自带的ab命令可以测试服务的压力,而nginx没有自带的命令,必须要采用第三方软件来测试,今天就简单介绍一下webbench对nginx的压力测试,压力测试是对系统管理员和运维人员必须的,可以很清晰地看清服务器能接受多大压力.注:本人是在虚拟机上做测试. 1.下载webbench软件和安装 wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz tar xv

nginx压力测试及防止恶意压力测试的方法

nginx压力测试方法: #ab命令 #安装ab #Centos系统 yum install apr-util #Ubuntu系统 sudo apt-get install apache2-utils #ab命令的参数 -n //在测试会话中所执行的请求个数.默认为1 -c //一次产生的请求个数.默认为1 -t //测试所进行的最大秒数.默认值为50000 -p //包含了需要的POST的数据文件 -T //POST数据所使用的Content-type头信息 #实例 ab -c 1000 -n

nginx优化压力测试

Nginx优化 Nginx以事件驱动(epoll)的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理.负载平衡.但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞.所以必须使用FastCGI方式来执行PHP程序. 由于Nginx本身的一些优点,轻量,开源,易用,越来越多的公司使用nginx作为自己公司的web应用服务器,本文详细介绍nginx源码安装的同时并对nginx进行优化配置. 一.Nginx的优化 1.编译安装前优化 编译前的优化主要是用来修改程序