nginx压测

1. 环境:Red Hat 4.1.2-52

    nginx1.6.2

    ab:Version 2.0.40-dev

2. 首先安装apache的ab工具(ApacheBench):yum install httpd-tools

安装nginx:

./configure --prefix=/usr/local/nginx1.6.2 --add-module=/usr/local/nginx1.6.2/HttpUpStreamConsistentHash/ngx_http_consistent_hash-master --with-http_stub_status_module

make && make install
说明:--add-module:是增加nginx的第三方consistent hash模块。

    --with-http_stub_status_module:是增加监控功能。

3. 用ab命令进行压测:

./ab -c 2000 -n 80000 http://www.jackal.com/index.html
说明:-c:每次2000个并发。

             -n:总共80000次请求

注意:有可能你的-c参数设定的太大。导致linux打开socket文件描述符失败。

解决方案:查看linux支持的文件描述符大小:ulimit -n ,然后根据服务器实际情况设定文件描述符的大小 ulimit -n 30000,设定文件描述符打开的个数为30000

4. nginx调优

高并发思路:

socket层面:1. 在linux下设置允许打开的socket的最大连接数:somaxconn,查看:cat /proc/sys/net/core/somaxconn。设置:echo 50000 > /proc/sys/net/core/somaxconn

      2. 在nginx下设置一个worker进程允许打开的socket的最大连接数:worker_connections。

      3. 在linux中设置socket下加快tcp连接的回收:recycle。查看:cat /proc/sys/net/ipv4/tcp_tw_recycle。0表示:不快速回收,1:快速回收。设置:echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle

      4. 在linux中设置socket下空的tcp是否允许回收利用:reuse。查看:cat /proc/sys/net/ipv4/tcp_tw_reuse。0表示:不利用,1:利用。设置:echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse

      5. 在linux中设置socket防止tcp洪水攻击:tcp_syncookies。查看:cat /proc/sys/net/ipv4/tcp_syncookies。0表示:不抵御,1:抵御。      设置:echo 0 > /proc/sys/net/ipv4/tcp_syncookies

文件层面:1. 在linux中设置文件的打开数量用:limit -n 65535

      2. 在nginx中设置一个woker进程允许打开的文件个数:worker_rlimit_nofile

5. 优化脚本

#!/bin/bash

echo 10240 > /proc/sys/net/core/somaxconn
echo 1     > /proc/sys/net/ipv4/tcp_tw_recycle
echo 1     > /proc/sys/net/ipv4/tcp_tw_reuse
echo 0     > /proc/sys/net/ipv4/tcp_syncookies

nginx压测_第1张图片

你可能感兴趣的:(nginx压测)