搭建一个具有缓存功能的反向代理服务
前提:需要搭建和部署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.aldzs.com/ -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