`
wb284551926
  • 浏览: 551332 次
文章分类
社区版块
存档分类
最新评论

nginx折腾记(HTTP性能能测试,与Apache对比)(转载)

 
阅读更多

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

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

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

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

1
2
3
4
5
6
7
./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 的配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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;
        }
    }
}

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[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如下:

1
2
3
4
[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 就先将自己压死了 -_- ,最后只能自己压自己了。

测试脚本大概如下:

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

index.html 的大小是:123784 byte

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

image

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

image

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

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

 

imageimage 

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

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

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

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

 

image   image

针对第二组图片也是有几个地方需要解析一下的:

生产环境的成绩应该是在蓝线和红线之间的区间,这个就不用再解析了吧。

“Logest Response Time” 实际上取的是能完成所有请求中的99%时的时间,这样可以屏蔽一些误差。

随着压力的增加,响应时间的飙升是可以预见的,但是多少才算是一个可接受范围呢?在2009系统架构师大会腾讯的邱跃鹏在《海量SNS网站的柔性运营》中的发言提到的“用户速度体验的1-3-10原则”:

image

可以简单的认为:如果以3秒的响应时间作为标准的话,nginx能应付不超过10000的并发连接数,如果以10秒响应时间作为标准的话,nginx能应付15000以下个并发连接,当然,可能场合不同,您的用户连0.3秒都无法忍受,这个就要另说咯。

如果我假设,只要服务器不出现“连接重置”,“服务器无响应”等错误,只要能返回内容,我就愿意等,那么nginx能应付多大的并发连接数呢?我自己做了个测试,20000+20000个长连接,20000个短链接,同时压向nginx,结果如何呢?

imageimage

nginx还是顶住了,没挂。我曾试过再加大压力,但是始终跑不完测试,结果作罢。

 

不怕不识货,就怕货比货,大名鼎鼎的apache又会怎么样呢?在此之前大家可以看看这篇帖子——大家猜这样的linux服务器 apache最大的并发数是多少,帖子中提到的服务器比我这台还要好,但是,超过70%的人都认为突破不了3000大关,咱们“不看广告,看疗效”。

我的Apache使用worker模式,配置如下:

1
2
3
4
5
6
7
8
9
10
<ifmodule worker.c>
    ServerLimit  1000
    ThreadLimit  11000
    StartServers 40
    MaxClients   30000
    MinSpareThreads  1000
    MaxSpareThreads  1000
    ThreadsPerChild  300
    MaxRequestsPerChild 0
</ifmodule>

imageApache 短连接成绩(1/10抽样展示)

imageApache 短连接成绩(1/10抽样展示)

imageimageimageimage

Apache 的结果图形和nginx类似,但是大家请留意横坐标,最大是10000,而nginx最大的是20000,这是由于测到10000的时候,再往上加压力Apache就受不了,不是SWAP用尽就是连接超时。

 

我把nginx和Apache的图标拼在一起,方便对比:

imageimageimageimage

 

从图表可以看到nginx作单纯的WEB服务器,也就是放静态内容,性能上比Apache要好,特别可承受压力、带宽及资源消耗上都要优于Apache。很多大型网站都喜欢把nginx放在前端,可能就是这个原因吧。

 

原文地址:http://www.cnblogs.com/killkill/archive/2010/04/14/1711810.html

分享到:
评论

相关推荐

    实战Nginx取代Apache的高性能Web服务器_文字版

    一、Nginx与Apache的性能对比 1. 并发处理:Nginx采用异步非阻塞I/O模型,可以同时处理大量并发请求,而Apache则采用多进程或线程模型,对系统资源消耗较大。 2. 内存占用:Nginx的单进程内存占用相对较小,适合...

    nginx替代方案,nginx代替apache与jboss

    本文将详细介绍如何使用 Nginx 替代 Apache,并与 JBoss 结合使用,以提高系统的整体性能。 #### 现有部署情况 当前系统使用的是 **Apache + mod_jk + JBoss** 的组合。其中 mod_jk 作为 Apache 和 JBoss 之间的...

    Web服务器选型(Apache+Nginx+Lighttpd)之性能对比测试报告.pdf

    这篇性能对比测试报告主要关注了三个主流的Web服务器——Apache、Nginx和Lighttpd在性能上的差异。测试的目的是为了评估这三款服务器在实际应用中的性能表现,为未来的项目选择提供依据。测试环境是在一台配置为8核...

    nginx性能测试与优化1

    【Nginx性能测试与优化】是针对Nginx服务器进行性能评估和调优的过程,以便提高其处理HTTP请求的能力和资源利用率。本篇主要涉及了两个测试工具——ab和wrk,以及如何在CentOS7上编译安装Nginx 1.16.1稳定版,并使用...

    实战Nginx:取代Apache的高性能Web服务器 PDF

    2. 轻量级:Nginx的资源占用很小,包括内存和CPU的占用都远低于Apache,这让Nginx可以在硬件资源有限的情况下提供更高的性能。 3. 高并发连接处理能力:Nginx可以处理数以万计的并发连接,这对于需要高吞吐量的网站...

    实战Nginx取代Apache的高性能Web服务器.rar

    《实战Nginx取代Apache的高性能Web服务器》一书,主要探讨了如何利用Nginx这一现代、高性能的Web服务器来替代传统的Apache服务器,以提升网站的运行效率和响应速度。Nginx以其异步非阻塞的I/O模型、模块化设计以及...

    apache与nginx区别

    ### Apache与Nginx的区别详解 #### 一、概述 在服务器领域,Apache与Nginx作为两大主流的Web服务器软件,在技术实现上各有特点,适用于不同场景的需求。本文将从多个角度对这两种服务器进行比较分析,帮助读者理解...

    实战Nginx取代Apache的高性能Web服务器

    在详细介绍Nginx取代Apache作为高性能Web服务器之前,先来阐述一下这两个Web服务器软件的基础知识以及它们之间的主要区别。Apache是目前使用最广泛的Web服务器软件之一,它是一个开源项目,从1995年就开始活跃在Web...

    实战Nginx:取代Apache的高性能Web服务器+张宴.扫描版

    《实战Nginx:取代Apache的高性能Web服务器》是一本深度探讨Nginx技术的书籍,作者张宴通过丰富的实践经验和深入的技术解析,为读者揭示了Nginx作为高性能Web服务器的优势及其应用策略。这本书主要涵盖了以下几个...

    实战Nginx:取代Apache的高性能web服务器

    知识点三:Nginx与Apache的对比 Apache是另一个广泛使用的开源web服务器,Nginx常被拿来与之比较。以下为两者的主要区别: 1.工作模式:Apache是多进程模式,而Nginx是事件驱动模式。 2.处理静态文件:Nginx处理静态...

    apache与nginx安装使用

    Apache与Nginx是两种广泛使用的HTTP服务器,它们在Web服务领域扮演着重要角色。Apache以其强大、稳定和丰富的模块支持而闻名,而Nginx则以高效的反向代理、负载均衡和静态文件处理能力著称。下面我们将详细介绍这两...

    实战Nginx:取代Apache的高性能Web服务器.

    四、Nginx与Apache的对比 1. 性能:在处理高并发场景下,Nginx的性能优于Apache,尤其在处理静态文件时。 2. 资源占用:Nginx占用更少的系统资源,适合部署在资源有限的服务器上。 3. 功能:Apache支持更多模块,...

    实战Nginx_取代Apache的高性能Web服务器

    ### 实战Nginx:取代Apache的高性能Web服务器 #### Nginx简介 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的程序设计师Igor Sysoev所开发。自2004年公开发布以来,...

    apache到nginx配置文件转换工具

    一个开源的Linux下运行的命令行工具,能将Apache的配置文件转换成相应的Nginx的配置文件。本工具能自动将Apache Web服务器的配置文件转化成Nginx的配置文件,减少WEB服务器迁移的工作量。 该工具从Apache Web服务器...

    实战Nginx.取代Apache的高性能Web服务器

    1.4 Nginx与Apache、Lighttpd的综合对比 第2章 Nginx服务器的安装与配置 2.1 安装Nginx服务器所需要的系统资源 2.2 Nginx的下载 2.3 Nginx的安装 2.4 Nginx的启动、停止、平滑重启 2.5 Nginx的平滑重启 2.6 ...

    实战Nginx:取代Apache的高性能Web服务器

    Nginx是一款高性能的Web服务器,它以其高效、稳定和低资源消耗而闻名,常被用作替代Apache的解决方案。本篇文章将深入探讨Nginx的特性、优势以及如何在实际环境中部署和配置Nginx。 一、Nginx的特点与优势 1. 异步...

    配置Nginx前端Apache后端服务器

    ### 配置Nginx前端Apache后端服务器详解 在现代Web架构中,为了提高网站的性能、安全性以及实现负载均衡,Nginx与...希望本文能帮助读者理解和掌握Nginx与Apache组合的核心配置技巧,搭建出高性能的Web服务架构。

    nginx+tomcat测试报告.doc

    本次测试的主要目的是评估单个Tomcat服务器与Nginx反向代理结合后的性能表现,包括处理并发请求的能力、响应速度以及资源消耗等方面。通过对比分析,旨在优化服务器架构,提高网站服务的稳定性和效率,为大规模用户...

    Nginx:取代apache的高性能服务器

    Nginx (“engine x”) 是俄罗斯人Igor Sysoev编写的一款高性能HTTP 和反向代理服务器。Nginx选择了epoll和kqueue作为网络I/O模型,在高连接并发的情况下,Nginx是Apache服务器不错的替代品,它能够支持高达50 000个...

Global site tag (gtag.js) - Google Analytics