`

nginx网站性能优化和测试2

 
阅读更多

目标
1、缓存动态脚本生成的html
2、缓存静态文件(ico|css|js|gif|jpe?g|png|txt),让nginx直接从缓存中提供静态文件,不用再透过apache2来提供(众所周知,Apache2的静态文件性能远不如nginx)
3、对首页($uri = /),控制合适的过期时间,既要考虑性能,也要考虑用户到即时访问最新信息。
环境
OS(操作系统):Debian GNU/Linux Lenny 5.0
前端Web Server(反向代理):Nginx 0.7.67
后端Web Server(处理动态页面):Apache2
涉及网站类型:主要是PHP,Typecho,Wordpress
参照:ispconfig使用nginx 反向代理
过程记录
关闭Apache2的gzip压缩,交给nginx去压缩。
echo 'SetEnv no-gzip' >> /etc/apache2/apache2.conf
nginx的配置文件添加如下内容:
http {
......
#添加一个名为STATIC的cache空间
proxy_cache_path /var/tmp/nginx-cache/STATIC levels=1:2 keys_zone=STATIC:1000m
inactive=24h max_size=1g;
}
server {
listen 8.8.8.8:80; #你自己的IP
server_name _; #泛域名支持
gzip on;
gzip_static on;
gzip_proxied any;
gzip_disable "MSIE [1-5]\.";
gzip_comp_level 9;
gzip_min_length 1000;
gzip_buffers 4 8k;
gzip_types text/plain application/x-javascript text/css text/html application/xml text/javascript;
location / {
proxy_pass http://127.0.0.1:80 ; #后端的Apache2
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie; #对用户传输Set-Cookie的http头,不然无法支持一些包含cookie的应用,比如我的typecho
proxy_hide_header X-Powered-By; #隐藏不必要的头,减少传输数据
proxy_hide_header X-Mod-Pagespeed; #隐藏不必要的头,减少传输数据
proxy_cache STATIC; #使用先前定义的cache空间
proxy_cache_valid 200 404 304 1m;
proxy_cache_use_stale error timeout invalid_header updating
http_500 http_502 http_503 http_504;
proxy_cache_key "$host$uri$is_args$args$http_cookie"; #这是关键,以免用户的cookie混用
location ~* \.(ico|css|js|gif|jpe?g|png)$ { #针对静态文件单独处理
proxy_pass http://127.0.0.1:80 ; #后端的Apache2
proxy_set_header Host $host;
expires max;
break;
proxy_cache STATIC;
proxy_cache_valid 200 404 304 1m;
proxy_cache_use_stale error timeout invalid_header updating
http_500 http_502 http_503 http_504;
proxy_cache_key $host$uri$is_args$args; #可以看出,与上面的相比,这里没有cookie,最大化利用静态文件的缓存。
}
}
}
压力测试
优化之前:
之所以用并发100,请求100,是因为1000的时候已经挂掉了(测试环境的硬件性能有限)……
ispconfig:/tmp# ab -c 100 -n 100 http://www.linuxzh.org/jobs.html
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient).....done
Server Software: Apache
Server Hostname: www.linuxzh.org
Server Port: 80
Document Path: /jobs.html
Document Length: 31483 bytes
Concurrency Level: 100
Time taken for tests: 18.370 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 3178200 bytes
HTML transferred: 3148300 bytes
Requests per second: 5.44 [#/sec] (mean)
Time per request: 18369.758 [ms] (mean)
Time per request: 183.698 [ms] (mean, across all concurrent requests)
Transfer rate: 168.96 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 2 0.5 2 3
Processing: 467 9837 4912.1 9825 18365
Waiting: 455 9820 4912.1 9804 18350
Total: 470 9839 4911.6 9827 18367
Percentage of the requests served within a certain time (ms)
50% 9827
66% 12902
75% 14182
80% 15097
90% 16446
95% 17511
98% 18322
99% 18367
100% 18367 (longest request)
优化之后:
ispconfig:tmp# ab -c 1000 -n 1000 http://www.linuxzh.org/jobs.html
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 210.56.192.69 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software: nginx
Server Hostname: www.linuxzh.org
Server Port: 80
Document Path: /
Document Length: 17117 bytes
Concurrency Level: 1000
Time taken for tests: 0.160 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 17451000 bytes
HTML transferred: 17117000 bytes
Requests per second: 6236.55 [#/sec] (mean)
Time per request: 160.345 [ms] (mean)
Time per request: 0.160 [ms] (mean, across all concurrent requests)
Transfer rate: 106283.28 [Kbytes/sec] received
Connection Times (ms)
min mean[+-sd] median max
Connect: 35 57 7.7 58 68
Processing: 55 62 4.9 62 71
Waiting: 12 40 15.7 35 69
Total: 104 119 5.7 119 130
Percentage of the requests served within a certain time (ms)
50% 119
66% 121
75% 123
80% 124
90% 126
95% 128
98% 129
99% 130
100% 130 (longest request)
注意
1、proxy_key 中只有用户发出的Cookie才会单独生成一个缓存,也就是说,不会每个未登陆的用户都生成一个缓存文件。
另外,针对静态文件,不记录cookie。
2、记得关闭后端Server的gzip压缩,nginx会直接缓存gzip的内容,不支持gzip的浏览器可能会出现乱码等问题。

分享到:
评论

相关推荐

    nginx性能测试与优化1

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

    nginx优化详细优化参数

    #### 三、Nginx性能优化 ##### 3.1 调整工作进程数 根据服务器CPU核心数量来设置`worker_processes`,通常设置为等于或小于CPU核心数。 **配置示例**: ```nginx worker_processes auto; # 自动根据CPU核心数调整 `...

    nginx+tomcat测试报告.doc

    Nginx+Tomcat架构测试报告 1. 测试目的 本次测试的主要目的是评估单个Tomcat服务器与Nginx反向代理结合后的性能表现,...此外,还可以研究其他性能优化手段,如使用更高效的缓存策略、调整Nginx和Tomcat的缓存配置等。

    nginx 配置及优化

    **Nginx配置与优化详解** Nginx是一款高性能的HTTP和反向代理服务器...实际操作中,还需要根据具体业务场景进行调整,不断测试和优化以达到最佳性能。记得随时查看官方文档和社区分享,获取最新的配置技巧和最佳实践。

    优化nginx大并发——轻松应对上万并发访问

    Nginx作为一款广泛应用的反向代理和负载均衡服务器,其高效的性能和低资源消耗使其成为处理高并发场景的首选。本文将详细探讨如何通过系统层面和Nginx配置层面的优化,使Nginx能够轻松应对上万甚至十万级别的并发...

    基于Redis缓存数据库和Nginx负载均衡技术的购物网站性能优化.docx

    【基于Redis缓存数据库和Nginx负载均衡技术的购物网站性能优化】 随着互联网的快速发展,电子商务已经成为人们日常生活的重要组成部分。购物网站的性能优化对于提供流畅的用户体验和支撑大规模并发访问至关重要。本...

    Nginx和Varnish优化补充

    Nginx和Varnish是当前流行的高性能Web服务器和反向代理服务器,经常用于缓存和负载均衡。针对这两个技术的优化补充知识点,主要围绕提升服务器性能、处理静态内容的能力以及如何正确配置以应对后端服务变更。 首先...

    nginx1.18 nginx1.18 nginx1.18

    - **模块更新**:与第三方模块的兼容性改进,例如模块的性能优化或新功能添加。 安装和配置 Nginx 1.18 在 Linux 系统上通常涉及以下步骤: 1. **下载**:从 Nginx 官方网站或通过包管理器(如 apt-get 或 yum)...

    性能测试诊断分析与优化

    Web服务器如Apache或Nginx的性能可以通过监控响应时间、并发连接数、CPU和内存使用情况来评估。应用服务器如Tomcat或Jboss的性能指标包括线程池状态、内存泄漏、错误日志等。数据库性能优化则涉及SQL查询效率、索引...

    Nginx高性能WEB服务器系列(超级详细)

    Nginx 日志记录了服务器的所有访问记录,对其进行分析可以帮助优化性能和解决安全问题。 - **日志格式**:通过 `access_log` 指令配置日志格式。 - **日志分析工具**:使用如 AWK、Sed、Logstash 等工具进行日志...

    大型网站性能优化实战从前端网络CDN到后端大促的全链路性能优化

    在构建和运营大型网站时,性能优化是至关重要的,它直接影响到用户体验、网站的可扩展性和业务的成功。本文将深入探讨从前端网络CDN到后端大促的全链路性能优化策略,以提高网站的加载速度、响应时间和整体效率。 ...

    nginx日志测试使用 access.log.zip

    总之,`access.log`是Nginx服务器的重要组成部分,它提供了宝贵的服务器运行数据,通过有效的日志分析,我们可以更好地理解用户行为,优化网站性能,以及确保系统的稳定性和安全性。`access.log.zip`压缩文件的解压...

    nginx-php配置测试通过

    对于性能优化,可以调整Nginx和PHP-FPM的配置,例如设置合适的缓存大小、调整工作进程数量等。 总结,Nginx与PHP的整合对于搭建高效、稳定的动态网站环境至关重要。通过合理配置Nginx和PHP-FPM,以及针对特定框架如...

    keepalive nginx及面试题压力测试视频.zip

    在IT行业中,网络服务器的高可用性和性能优化是至关重要的,而`keepalive`和`nginx`正是两个关键的工具,用于实现这一目标。在这个名为"keepalive nginx及面试题压力测试视频.zip"的压缩包文件中,包含了关于这两个...

    nginx配置优化

    **Nginx配置优化**是提高Web服务器性能的关键步骤,特别是在处理高并发访问、静态资源分发和反向代理等场景下。Nginx以其轻量级、高性能和稳定性著称,通过合理的配置,可以有效地减少响应时间,提高系统整体效率。 ...

    linux-本说明介绍了如何提高Nginx的性能安全性和其他重要事项

    1. **性能优化** - **配置优化**:调整Nginx配置文件,例如增大worker_processes数量,根据硬件资源设定合适的worker_connections,以及开启或关闭不必要的模块。 - **缓存策略**:启用HTTP缓存,设置合理的缓存...

    Nginx的基本配置与优化

    #### 三、Nginx性能优化 为了提高Nginx的性能和效率,可以通过以下几种方式进行优化: 1. **调整worker_processes和worker_connections**: 根据服务器的实际硬件配置进行调整,以达到最佳的并发处理能力。 2. **...

    nginx测试代码

    本资源包“nginx测试代码”提供了7个Nginx的代码示例,旨在帮助初学者更好地理解和掌握Nginx的配置及使用。 1. **Nginx的基本架构**: Nginx采用事件驱动模型,非阻塞I/O,使其在处理高并发请求时表现出色。它的...

Global site tag (gtag.js) - Google Analytics