前提:需要搭建和部署nginx服务以及后端服务,以便测试反向代理使用,这部分工作省略。

一. 设置缓存空间

在nginx的http模块中开辟一块名为my_cache的缓存空间,缓存路径为/tmp/nginxcache,大小为10m。

# 设置缓存路径及其他缓存参数。
# levels定义高速缓存的级别,每个级别接收值1或2,
# keys_zone设置共享缓存名称和大小,所有活动的key和信息被存储再缓存中。
# max_size设置最大缓存大小
proxy_cache_path  /tmp/nginxcache levels=1:2 keys_zone=my_cache:10m max_size=1g;

二. 设置缓存

在nginx server模块设置反向代理缓存

    proxy_pass  http://127.0.0.1:3000;   #代理的后端服务
    proxy_cache my_cache ;    #定义用于缓存的共享缓存区域,默认为proxy_cache off
    proxy_cache_key $host$uri$is_args$args;    #设置缓存key
    proxy_cache_valid 200 304 302 5m;    #设置不同响应码的缓存时间
    proxy_cache_valid 404 10s;

三. 重启nginx,测试

nginx -s reload
siege http://onlinetest.guoew.cc/ -c 500 -t 5

Lifting the server siege...      done.                                                                                      Transactions:              129470 hits
Availability:              100.00 %            #成功率
Elapsed time:              299.03 secs        #执行时间
Data transferred:         6918.02 MB        #数据传输大小
Response time:                0.65 secs        #平均响应时间
Transaction rate:          432.97 trans/sec    #每秒处理请求数
Throughput:               23.13 MB/sec        #平均每秒传输数据量
Concurrency:              282.00            #实际最高并发
Successful transactions:      129470    #成功处理次数
Failed transactions:               0        #失败处理次数
Longest transaction:           17.72    #传输所花最长时间
Shortest transaction:            0.00    #传输所花最短时间

四. 不使用缓存,再进行测试

不敢直视,siege 500并发几乎全部报错,降低到并发100才能勉强进行测试。

ransactions:                8389 hits
Availability:              100.00 %
Elapsed time:              299.32 secs
Data transferred:          356.36 MB
Response time:                3.05 secs
Transaction rate:           28.03 trans/sec
Throughput:                1.19 MB/sec
Concurrency:               85.60
Successful transactions:        6721
Failed transactions:               0
Longest transaction:           18.60
Shortest transaction:            0.00

五. 总结

02-18 02:53