测试nginx处理能力和IO读写能力,使用工具webbench、iozone。
1、nginx测试
使用webbench工具,增加并发量,时间分别取30s,60s
1、webbench -c 200 -t 60 http://localhost/index.html
200并发60s执行结束,从200,500,800,1000,依次向上加,直至出现Failed请求
Speed(pages/min):指的输出页数/分钟。
Speed(bytes/sec):是指比特/秒,它表示网络传输速度的大小,每秒钟传输数据量。
Request(susceed):表示成功或完成
Request(failed) :表示失败或未能完成。
2、IO测试
实例:#./iozone -a -n 512m -g 4g -i 0 -i 1 -i 5 -f /mnt/iozone -Rb ./iozone.xls
注:进行全面测试,最小测试文件为512M,直到测试到4g,测试read,write,测试的地方在/mnt下,生成xls文件。
write:测试向一个新文件写入的性能。
re-write:测试向一个已存在的文件写入的性能。当一个已存在的文件被写入时,所需工作量较少,因为此时元数据已经存在。re-write的性能通常比write的性能高。
read:测试读一个已存在的文件的性能。
re-Read:测试读一个最近读过的文件的性能。re-Read性能会高些,因为操作系统通常会缓存最近读过的文件数据。这个缓存可以被用于读以提高性能。
左侧一列是测试文件大小(K),最上边一行是块大小(K),中间数据是传输速度。例如下表中第二行的“1247515”,即测试文件大小为524288K,以块大小为64K来进行传输,传输速度为1247515kBytes/sec 。表格中数据为0的部分是因为选择-a 参数时,系统默认将自动停止使用低于64K的块大小测试。
3、Nginx配置仅做参考
Nginx标准参数
/etc/nginx/nginx.conf
worker_processes 10;
events {
worker_connections 102400;
}
client_max_body_size 100m;
client_body_buffer_size 256k;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 120;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
如果是内网再中转服务器的话-Forwarded-For请使用
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Nginx服务器需要配置的Linux操作系统参数
net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout = 10 修改系統默认的 TIMEOUT 时间
配置步骤:
1 >sudo vi /etc/sysctl.conf
添加下面四项(配置文件中几乎都包含了第一项,故只要加后面三项即可)
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 10
2 >sudo sysctl -p
刷新配置
3 >sudo sysctl -a |grep reuse
检查配置是否生效
**********************************************************************************************