nginx与php连接性能测试,nginx折腾记(HTTP性能测试,与Apache对比)

话说nginx("engine x")在大压力的环境中比apache的表现要好,于是下载了一个来折腾一下。

下载并编译安装,我的编译过程有点特别:

1。去除调试信息,修改$nginx_setup_path/auto/cc/gcc这个文件,将 CFLAGS="$CFLAGS -g"  这一行注释掉。

2。由于仅测试WEB服务器的性能,所以不安装FastCGI。

./configure \

--prefix=/opt/nginx \

--user=www \

--group=www \

--with-http_stub_status_module \

--with-http_ssl_module \

--without-http_fastcgi_module

安装完成之后,将一堆生产环境中静态化了的HTML页面copy 到 nginx 的服务器上,我的 nginx.conf 的配置如下:

worker_processes  8;

worker_rlimit_nofile 102400;

events

{

use epoll;

worker_connections  204800;

}

http

{

include       mime.types;

default_type  application/octet-stream;

sendfile        on;

tcp_nopush     on;

charset GBK ;

keepalive_timeout  60;

server_names_hash_bucket_size 128;

client_header_buffer_size 2k;

large_client_header_buffers 4 4k;

client_max_body_size 8m;

open_file_cache max=102400 inactive=20s;

server

{

listen       80;

location /

{

root   /tmp/webapps/;

index  index.html index.htm;

}

location = /NginxStatus

{

stub_status on;

access_log off;

}

error_page   500 502 503 504  /50x.html;

location = /50x.html

{

root   html;

}

}

}

为了使操作系统不成为瓶颈,调整了一下参数,如下:

[root@logserver etc]# cat sysctl.conf | grep -v "^$" | grep -v "^#";

net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 0

kernel.core_uses_pid = 1

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 6553600

net.ipv4.tcp_syncookies = 1

kernel.msgmnb = 65536

kernel.msgmax = 65536

kernel.shmmax = 68719476736

kernel.shmall = 4294967296

net.ipv4.tcp_max_tw_buckets = 6000

net.ipv4.tcp_sack = 1

net.ipv4.tcp_window_scaling = 1

net.ipv4.tcp_rmem = 4096 87380 4194304

net.ipv4.tcp_wmem = 4096 16384 4194304

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.core.netdev_max_backlog = 262144

net.core.somaxconn = 262144

net.ipv4.tcp_max_orphans = 3276800

net.ipv4.tcp_max_syn_backlog = 262144

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_synack_retries = 1

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_mem = 94500000 915000000 927000000

net.ipv4.tcp_fin_timeout = 1

net.ipv4.tcp_keepalive_time = 30

net.ipv4.ip_local_port_range = 1024 65000

我这台是比较老的服务器了,DELL 2850 两颗 Intel(R) Xeon(TM) CPU 2.80GHz,OS认作4个CPU,4GB内存,OS如下:

[root@logserver etc]# uname -a

Linux logserver 2.6.9-78.ELsmp #1 SMP Thu Jul 24 23:54:48 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux

[root@logserver etc]# cat /etc/redhat-release

CentOS release 4.7 (Final)

测试工具是 apache 的 ab ,用来模拟,大量的并发连接,本来是在另一台虚拟机中模拟客户端,但随着压力的上升,还没压死 nginx 就先将自己压死了 -_- ,最后只能自己压自己了。

测试脚本大概如下:

ab -n 100000 -c >client_number< [-k] http://***********/cms/index.html

index.html 的大小是:123784 byte

我将测试数据整理到Excel中,猛击这里下载,如下:

format,png

nginx 短连接测试结果(1/20抽样展示)

format,png

nginx 长连接测试结果(1/20抽样展示)

单看数字可能比较枯燥,还是看图吧:

format,pngformat,png

针对第一组图片,有几个地方需要解析一下的。

“Concurrency Level”并不对应有多少个浏览器或者多少个用户,应该理解为并发连接数,通常IE访问一个网页,打开3~10个连接,正常情况下,10000个“客户端数”可以非常粗略地认为1000~3000个用户吧。

长连接的典型代表是HTTP1.1,而短连接的典型代表是HTTP1.0,支持HTTP1.1的浏览器早就遍地都是了,为什么还要测试短连接呢?第一,这是因为实际的浏览中,一个“长”连接不可能像ab测试中的“长”连接这么长,所以短链接的测试成绩作为一个“底线”;第二,某些扫描工具用的就是短链接的方式,既然要做互联网的应用,也要“照顾”它们啊。因此,在生产环境中,真实的成绩会在红线和蓝线之间的区间,具体是怎么样呢,“这个就不能说太细了”。

关于“传输率”这幅图的纵坐标的意义,100000相当于100MB/sec,也就是常说的百兆网络(忽略CSMA/CD造成的损失),而常说的千兆网络,经过测试,大概在400000~500000之间,换句话来说,如果nginx服务器的出口带宽是百兆网络的话,瓶颈在网络而不是nginx。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nginx性能测试可以通过多种方法来进行。其中,优化linux内核参数是一种常用的方法。通过调整内核参数,可以使内核变得更为强大,从而提升nginx的性能。另外,优化nginx配置文件也是一种有效的方法。通过对nginx配置文件进行调整和优化,可以提高nginx的性能表现。此外,扩展服务器的CPU和内存也可以增强服务器的性能。通过增加服务器的CPU核心数和内存容量,可以使服务器更强大,进而提升nginx的性能。 关于nginx性能测试的详细信息,您可以参考《Testing the Performance of NGINX and NGINX Plus Web Servers》这篇文章。该文章提供了关于NGINXNGINX Plus Web服务器性能测试的详细信息,可以帮助您更好地了解和测试nginx的性能表现。 在进行性能测试时,还需要注意一些细节。例如,对于16核的服务器,不需要开启RPS特性,就可以将所有CPU核心利用起来,使网络达到极限。而对于32核的服务器,可能需要开启RPS特性。这是根据测试结果得出的结论。综上所述,通过合理的优化和测试,可以有效地提升nginx的性能表现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Nginx 性能、压测](https://blog.csdn.net/snake1900/article/details/121656135)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Nginx 性能测试](https://blog.csdn.net/SkyChaserYu/article/details/108601789)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值