Linux之LNMP架构(Openresty+Memcache)

本文介绍了OpenResty,一个基于Nginx与Lua的高性能Web平台,以及Memcache,一个高性能的分布式内存对象缓存系统。内容包括OpenResty和Memcache的工作原理,Memcache的安装及缓存增加过程,以及如何结合OpenResty进行缓存应用的测试和压力测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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的速度比较快

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值