文章目录
openresty
OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
OpenResty 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。
OpenResty 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应
安装
源码
由于已经内置了我们需要的module 所以
./coufigure && gmake && gmake install
默认安装到/usr/locale/openresty/
openresty是基于nginx的二次开发 内置了nginx
先关闭已有的nginx或者httpd服务
/usr/locale/openresty/nginx/sbin/nginx
浏览器要清缓存
使用openresty
实验环境:
server1 172.25.254.101 openresty
server2 172.25.254.102 memcached
server3 172.25.254.103 memcached
配置openrsty
编辑/usr/local/openresty/nginx/conf/nginx.conf
........
## 这里定义了后端memcached服务 并设置了最大保持512个不立即关闭的连接
16 upstream memcache {
17 server 172.25.254.102:11211;
18 server 172.25.254.103:11211;
19 keepalive 512;
20 }
........
##在server字段里添加
38 server {
........
##
59 location /memc {
60 internal; ##使用内部访问 也可以外部访问并使用ip控制
61 memc_connect_timeout 100ms;
62 memc_send_timeout 100ms;
63 memc_read_timeout 100ms;
64 set $memc_key $query_string;
65 set $memc_exptime 300; ## 缓存时间
66 memc_pass memcache;
67 }
........
76 location ~ \.php$ {
77 set $key $uri$args; ##将$uri$args 设置为 key
78 srcache_fetch GET /memc $key; ## 拦截用户的输入
79 srcache_store PUT /memc $key; ## 拦截输出
80 root html;
81 fastcgi_pass 127.0.0.1:9000;
82 fastcgi_index index.php;
83 #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
84 include fastcgi.conf;
85 }
........
}
上面的location 完成了:
当所请求的uri以“.php”结尾时,首先到memcache中查询有没有以
u
r
i
uri
u
r
i
args为key的数据,如果有则直接返回;否则,执行location的逻辑,如果返回的http状态码为200,则在输出前以
u
r
i
uri
u
r
i
args为key,将输入结果存入memcache。
效果
重新加载配置
/usr/local/openresty/nginx/sbin/nginx -s reload
差不多20%的性能提升