搭建一个具有缓存功能的反向代理服务

来源:07素材网 02月17日 23:27

一. 设置缓存空间

在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

五. 总结

原文出处:https://www.cnblogs.com/guoew/p/10393231.html
版权声明:本文来源地址若非本站均为转载,若侵害到您的权利,请及时联系我们,我们会在第一时间进行处理。

头条

在使用SQLite3时遇到的几个坑

在使用SQLite3时遇到的几个坑

《本打算在SQLite3数据库里执行一个查询语句,使用的是php语言,起初遇到的是权限问题: permission denied,因为SQLite3数据库文件和PHP执行者属于两个不同的用户,首先需要对这个文件执行mode 777的权限开放,然后,又遇到了下面这样的PHP错误