目标
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的浏览器可能会出现乱码等问题。
分享到:
相关推荐
1、ab 测试工具安装 2、wrk测试工具 1、系统和nginx是否可以建立多个socket连接 2、系统和nginx是否允许一次性打开多个文件 1、http连
- 配置Nginx:本资源包提供了丰富的配置示例,让您了解Nginx的各种配置方式,掌握如何优化Nginx的性能。 - 测试Nginx:通过本资源包提供的测试方法,您可以快速检查Nginx的运行状态,避免因配置错误而导致的故障。 -...
通常来说,一个优化良好的 Nginx Linux 服务器可以达到 500,000 – 600,000 次/秒 的请求处理性能,然而我的 Nginx 服务器可以稳定地达到 904,000 次/秒 的处理性能,并且我以此高负载测试超过 12 小时,服务器工作...
我使用Blitz.io来进行压力和性能测试. 下面的是我压力测试的命令. 功能是在60秒内逐渐增加用户. 在整个过程中,Blitz.io 每秒创建一个请求并增加4个用户(rise/run = 260/60). 代码如下:-p 1-250:60 ...
目录网盘文件永久链接 01-nginx介绍及编译安装 02-nginx信号量 03-nginx虚拟主机配置 04-nginx日志管理 ...20-ab压力测试及nginx性能统计模块 21-nginx单机1W并发优化 22-服务器集群搭建 23-集群性能测试
Nginx (engine x) 是一个高性能的Web服务器和反向代理服务器,也可以作为邮件代理服务器。...Nginx是免费开源的,同时Nginx也有收费的商业版本,商业版本提供了性能优化、宕机等紧急问题处理等技术支持和服务。
Nginx版UPUPW PHP绿色服务器平台采用Nginx+PHP+MariaDB的架构搭建,MariaDB和MySQL完全兼容使用方法一致省内存性能佳。 Nginx版UPUPW PHP绿色服务器平台 1807.1 更新日志: 主体部分: Nginx/1.14.0强化版 轻量级...
nginx作为最前端的服务器,他负责接收所有的客户端请求,对于请求的静态文件,由nginx服务器自己完成,因为它具有很好处理静态文件的能力,性能进行过优化,支持高并发量;uWSGI服务器作为支持服务器,是用来服务...
1.6 Nginx性能优化技巧 1.6.1 编译安装过程优化 1.6.2 利用TCMalloc优化Nginx的性能 1.6.3 Nginx内核参数优化 1.7 实战Nginx与PHP(FastCGI)的安装、配置与优化 1.7.1 什么是 FastCGI 1.7.2 Nginx+...
尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。 本文是W3CGROUP在成功架设Nginx+Php Web服务器之后的一个总结,成功设置Nginx开启多域名多站点,并且...
2 存储库布局configs : VPP、NGINX 和 VCL 的配置文件nginx_patches : NGINX 的VCL 补丁vpp_patches : 无锁 LDP 和 pinned-VPP 补丁scripts : VPP、NGINX 和客户端测试的脚本包:用于构建和下载的 Makefile3 建立在...
1、前端优化:活动开始前生成静态商品页面推送缓存和CDN,静态文件(JS/CSS)请求推送至文件服务器和CDN。 2、网络优化:如果是全国用户,最好是BGP多线机房,减少网络延迟。 3、应用服务优化:Nginx最佳配置、Tomcat...
由于默认的linux内核参数考虑的是最...以下linux 系统内核优化配置均经在线业务系统测试,并发10万左右服务器运行状态良好,用了一些时间整理,现和大家分享一下,如有那位高人看到配置上有问题,请给与指出! # Co
并拥有跟IIS一样便捷的图形管理界面,php本地测试工具同时支持MySQL 5.0 & 4.0两个版本,虚拟主机、虚拟目录、端口更改、SMTP、上传大小限制、自动全局变量、SSL证书制作、缓存性能优化等设置,只需鼠标一点即可完成...
Nginx (engine x)专为性能优化而开发,其特点是占有内存少,它的稳定性和低系统资源消耗,以及对并发连接的高处理能力,(单台物理服务器可支持5000个并发请求)。事实上nginx的并发能力确实在同类型的网页服务器中...
- 将Nginx子进程数设置为2,单进程连接数提高到3072 - 允许设置多个错误处理页面 - 允许设置多个PHP处理配置 2011年10月8日 - 添加vc运行库检测功能,未安装时提示手动安装vc运行库 - 调整网络、运行权限顺序,防止...
Postman还提供了各种工具,包括合并请求、重复请求、压力测试、性能测试等等,以帮助您优化和测试API。此外,Postman还支持集成GitHub、Bitbucket、GitLab等版本控制系统,以及Kubernetes、Firebase等Google/...
我的性能测试经验分享 闲扯: 性能测试门槛较高,选择前还是要谨慎,那么看下一名合格的性能测试工程师要求: 硬件大概信息,当硬件出现性能瓶颈后,提出可供替代硬件方案信息建议 系统框架的优劣势,以及框架下各...
用于我自己的站点的生产中,使其稳定,经过测试和最新 针对100个并发用户进行了优化 经过优化,仅在有流量时才使用资源(通过使用PHP-FPM的按需PM) 最好与Amazon Cloudfront一起用作SSL终结器和CDN 建立在轻量级...
实际我测试的 单纯的编译后静态文件和nginx的处理性能,确实已经相差不大,测试是使用ab测试的,单台nginx和阿帕奇测试后对比数据获得的结果,下次进行系统的测试在发测试数据,暂时只是测试了jpg图片 和html静态的...