一、OpenResty和Memcache介绍
1. OpenResty简介
OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台。我们知道开发 Nginx 的模块需要用 C 语言,同时还要熟悉它的源码,成本和门槛比较高。国人章亦春把 LuaJIT VM 嵌入到了 Nginx 中,使得可以直接通过 Lua 脚本在 Nginx 上进行编程,同时还提供了大量的类库(如:lua-resty-mysql lua-resty-redis 等),直接把一个 Nginx 这个 Web Server 扩展成了一个 Web 框架,借助于 Nginx 的高性能,能够快速地构造出一个足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。
2. Memchace介绍
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。
3. memcache工作流程如下:先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在 memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负 责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给memcached内存空间用完之后,会使用 LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。
二、memcache增加缓存
在上一个实验的基础上
(一)memcache的安装
1. 添加php环境变量
vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/php/bin
source ~/.bash_profile
2.下载软件,解压和编译
memcache-2.2.5.tgz
tar zxf memcache-2.2.5.tgz
cd memcache-2.2.5
phpize #PHPize是用来添加PHP扩展的,它可以在已经编译好的PHP里添加扩展
./configure
3. 安装
make && make install
4. 增加缓存模块
vim /usr/local/lnmp/php/etc/php.ini
extension=memcache.so
/etc/init.d/php-fpm reload
查看模块信息
php -m #查看模块
php -m | grep memcache
php -m | grep mysql
5. 开启memcache缓存
yum install -y memcached telnet
vim /etc/sysconfig/memcached #环境配置,不用修改
/etc/init.d/memcached start
6. talent测试连接
telnet localhost 11211
status
set name 0 0 6 #编号 缓存时间(不限制) 字符数
get name
delete name
(二)网页测试缓存效果
1. 将监控缓存信息的页面,拷贝到默认发布目录
cd memcache-2.2.5
cp memcache.php /usr/local/lnmp/nginx/html
cd /usr/local/lnmp/nginx/html
vim memcache.php
define('ADMIN_PASSWORD','westos'); // Admin Password
$MEMCACHE_SERVERS[] = '172.25.65.1:11211'; // add more as an array
#$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array
2. 将测试页面复制到默认发布目录
cp example.php /usr/local/lnmp/nginx/html
/etc/init.d/memcached restart
3. 浏览器中进行测试
在浏览器中输入http://172.25.65.1/memcache.php进入监控页面,重新打开一个窗口访问http://172.25.65.1/example.php,多次访问example.php网页,观察监控页面的变化
(1)开始界面
(2)多次访问example.php后,监控页面的变化
4. 进行压力测试
ab -c 10 -n 5000 http://172.25.65.1/index.php #访问example.php快
ab -c 10 -n 5000 http://172.25.65.1/example.php
(1)访问index.php
(2)访问example.php
三、openresty+memcache
实验准备:openresty-1.13.6.1.tar.gz
# 关闭nginx,避免影响
nginx -s stop
# 解压软件包
tar zxf openresty-1.13.6.1.tar.gz
# 编译和安装
./configure
gmake && gmake install
# 拷贝网页文件到发布目录
cd memcache-2.2.5
cp memcache.php example.php /usr/local/openresty/nginx/html/
# 修改配置文件
cd /usr/local/openresty/nginx/conf
vim nginx.conf
http {
upstream memcache {
server localhost:11211;
}
include mime.types;
default_type application/octet-stream;
location /memc {
internal; #只接收内部访问,不接收外部http访问(安全)
memc_connect_timeout 100ms; #连接连接中允许的超时时间
memc_send_timeout 100ms; #后端服务器数据回传时间
memc_read_timeout 100ms; #连接成功后,后端服务器响应时间
set $memc_key $query_string;
set $memc_exptime 300;
memc_pass memcache;
}
location ~ \.php$ {
set $key $uri$args;
srcache_fetch GET /memc $key; #先找memcahe,如果没有,则正常访问
srcache_store PUT /memc $key; #访问后将结果存入memcache
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
#重启nginx,使配置文件中的设置生效,在重启前,可以先对配置文件进行校验
/usr/local/openresty/nginx/sbin/nginx -t #校验
nginx
#压力检测
ab -c 10 -n 5000 http://172.25.65.1/index.php
ab -c 10 -n 5000 http://172.25.65.1/example.php #访问example.php的速度比较快