高性能Web服务之lnmmp架构应用

Memcached是一款开源、高性能、分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序。它是一个基于内存的“键值对”存储,用于存储数据库调用、API调用或页面引用结果的直接数据,如字符串、对象等。

memcached是以LiveJournal旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。现在
已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。

Memcached是一款开发工具,它既不是一个代码加速器,也不是数据库中间件。其设计哲学思想主要反映在如下方面:

1. 简单key/value存储:服务器不关心数据本身的意义及结构,只要是可序列化数据即可。存储项由“键、过期时间、可选的标志及数据”四个部分组成;
2. 功能的实现一半依赖于客户端,一半基于服务器端:客户负责发送存储项至服务器端、从服务端获取数据以及无法连接至服务器时采用相应的动作;服务端负责接收、存储数据,并负责数据项的超时过期;
3. 各服务器间彼此无视:不在服务器间进行数据同步;
4. O(1)的执行效率
5. 清理超期数据:默认情况下,Memcached是一个LRU缓存,同时,它按事先预订的时长清理超期数据;但事实上,memcached不会删除任何已缓存数据,只是在其过期之后不再为客户所见;而且,memcached也不会真正按期限清理缓存,而仅是当get命令到达时检查其时长;

Memcached提供了为数不多的几个命令来完成与服务器端的交互,这些命令基于memcached的协议实现。

memcahe常用使用命令:

存储类命令:set, add, replace, append, prepend
获取数据类命令:get, delete, incr/decr
统计类命令:stats, stats items, stats slabs, stats sizes
清理命令: flush_all

一、实验系统环境

系统平台:CentOS release 6.5 (Final)
web1.samlee.com 172.16.100.100 lnmp环境
web2.samlee.com 172.16.100.7 nginx服务
mem1.samlee.com 172.16.100.8 memcache服务

--------------------以下操作在mem.samlee.com主机上操作-----------------------

二、使用yum安装memcached及libevent

# yum -y install libevent memcached

三、memcached的常用选项说明

-l <ip_addr>:指定进程监听的地址;
-d: 以服务模式运行;
-u <username>:以指定的用户身份运行memcached进程;
-m <num>:用于缓存数据的最大内存空间,单位为MB,默认为64MB;
-c <num>:最大支持的并发连接数,默认为1024;
-p <num>: 指定监听的TCP端口,默认为11211;
-U <num>:指定监听的UDP端口,默认为11211,0表示关闭UDP端口;
-t <threads>:用于处理入站请求的最大线程数,仅在memcached编译时开启了支持线程才有效;
-f <num>:设定Slab Allocator定义预先分配内存空间大小固定的块时使用的增长因子;
-M:当内存空间不够使用时返回错误信息,而不是按LRU算法利用空间;
-n: 指定最小的slab chunk大小;单位是字节;
-S: 启用sasl进行用户认证;

四、临时启动memcached服务及信息查询

--启动memcached
# memcached -u memcached

--查询memcached缓存信息
# memcached -u memcached -vv

--指定增长因子为1.1倍查询
# memcached -u memcached -f 1.1 -vv

五、配置memcached主配置文件

# vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""

六、启动memcached服务进程并配置开机自启动

# chkconfig memcached on
# service memcached start

七、使用telnet命令测试memcached的使用
Memcached提供一组基本命令用于基于命令行调用其服务或查看服务器状态等。

# telnet 127.0.0.1 11211

示例如下:添加一个缓存,查询缓存操作

add命令:
add keyname flag  timeout  datasize
如:

add mykey 0 60 12
Hello world!

get命令:
get keyname

如:get mykey
VALUE mykey 0 12
Hello world!
END

--------------------以下操作在web1.samlee.com主机上操作-----------------------

八、安装Memcache的PHP扩展
1、安装PHP的memcache扩展

# tar xf memcache-3.0.8.tgz 
# cd memcache-3.0.8
# /usr/local/php/bin/phpize 
# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
# make && make install

上述安装完后会有类似以下的提示:

/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/

2、编辑/usr/local/php/etc/php.ini,在“动态模块”相关的位置添加如下一行来载入memcache扩展:

; extension_dir = "ext"
extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/memcache.so

而后对memcached功能进行测试,在网站目录中建立测试页面test.php,添加如下内容:

<?php
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211)  or die("Could not connect");

$version = $mem->getVersion();
echo "Server‘s version: ".$version."<br/>\n";

$mem->set(‘hellokey‘, ‘Hello World‘, 0, 600) or die("Failed to save data at the memcached server");
echo "Store data in the cache (data will expire in 600 seconds)<br/>\n";

$get_result = $mem->get(‘hellokey‘);
echo "$get_result is from memcached server.";         
?>

如果有输出“Hello World is from memcached.”等信息,则表明memcache已经能够正常工作,如下所示:

在memcache缓存服务器上查询缓存数据:

# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is ‘^]‘.
get hellokey
VALUE hellokey 0 11
Hello World
END

九、安装memcahephp图形监控工具

1、到memcahe安装程序包复制memcache.php至网页目录下

# tar xf memcache-3.0.8.tgz 
# cd memcache-3.0.8
# cp /usr/src/memcache-3.0.8/memcache.php /usr/local/nginx/html/

2.编辑memcached.php文件,修改如下选项:

$VERSION=‘$Id: memcache.php,v 0.2 2008/06/02 Exp $‘;
define(‘ADMIN_USERNAME‘,‘memcacheadmin‘);     // Admin Username 管理用户名
define(‘ADMIN_PASSWORD‘,‘redhat‘);      // Admin Password    管理用户密码
define(‘DATE_FORMAT‘,‘Y/m/d H:i:s‘);
define(‘GRAPH_SIZE‘,200);
define(‘MAX_ITEM_DUMP‘,50);
$MEMCACHE_SERVERS[] = ‘mem.samlee.com:11211‘; // add more as an array memcache服务器定义
//$MEMCACHE_SERVERS[] = ‘mymemcache-server2:11211‘; // add more as an array

注意$MEMCACHE_SERVERS[]可以配置多个memcache

3、打开IE浏览器,输入http://172.16.100.100/memcache.php 打开即可,注意第一次访问的时候提示输入登录用户名和密码。默认的的用户名密码:memcacheadmin/redhat,可以在php文件中配置

监控界面:
         在上面监控画面看出,左侧显示的是memcache的主机、端口,运行时间等信息;右侧显示的是cache利用率、缓存命中率、点击率(Hit)等信息。

注意:右则显示的信息,默认是多个memcache缓存的总数,需要选中Memcached Hosts对单个主机进行刷新,显示单个主机的信息

十、安装memadmin管理工具

1、将memadmin解压至网页目录下

# tar xf memadmin-1.0.12.tar.gz  -C /usr/local/nginx/html/
# cd /usr/local/nginx/html/

2、打开IE浏览器,输入http://172.16.100.100/memadmin 打开即可,注意第一次访问的时候提示输入登录用户名和密码。默认的的用户名密码:admin/admin,可以在config.php文件中配置

十一、Nginx整合memcached

server {
        listen       80;
        server_name  web1.samlee.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
                set $memcached_key $uri;
                memcached_pass     172.16.100.8:11211;
                default_type       text/html;
                error_page         404 @fallback;
        }

        location @fallback {
                proxy_pass http://172.16.100.7;
        }
}

访问测试如下:

以上为lnmmp架构应用所有内容!

时间: 2024-10-14 04:14:09

高性能Web服务之lnmmp架构应用的相关文章

Web服务之LNMMP架构及动静分离实现

一.LNMMP LNMMP环境是Linux + Nginx + Memcached + MySQL + PhP,即LNMP + memcached. Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通

高性能Web服务之lnmp架构应用

传统上基于进程或线程模型架构的web服务通过每进程或每线程处理并发连接请求,这势必会在网络和I/O操作时产生阻塞,其另一个必然结果则是对内存或CPU的利用率低下.生成一个新的进程/线程需要事先备好其运行时环境,这包括为其分配堆内存和栈内存,以及为其创建新的执行上下文等.这些操作都需要占用CPU,而且过多的进程/线程还会带来线程抖动或频繁的上下文切换,系统性能也会由此进一步下降. 在设计的最初阶段,nginx的主要着眼点就是其高性能以及对物理计算资源的高密度利用,因此其采用了不同的架构模型.受启发

搭建高性能web服务器之Nginx入门介绍(1.1)

<第1章研究Nginx前的准备工作,本章介绍了Nginx的特点以及在什么场景下需要使用Nginx,同时介绍了如何获取Nginx以及如何配置.编译.安装运行Nginx.本章还深入介绍了最为复杂的configure过程,这部分内容是学习本书第二部分和第三部分的基础.本节为大家介绍Nginx是什么>. 1.Nginx是什么,Nginx能帮我们做什么 2012年,Nginx荣获年度云计算开发奖(2012 Cloud Award for Developer of the Year),并成长为世界第二大W

高性能Web服务之varnish应用详解及实战应用

Varnish是一款开源的反向代理软件和HTTP加速器,也称为带缓存反向代理服务,与传统的Squid相比,Varnish具有性能更高.速度更快.管理更方便等诸多优点,很多大型的运营网站都开始尝试使用Varnish来替换Squid,这也是促使Varnish迅速发展起来的原因. Varnish同时也可作为Web缓存服务器,Web缓存(web cache)到底是是什么?Web缓存是指一个Web资源(如html页面,图片,js,数据等)存在与Web服务器和客户端(浏览器)直接的副本.缓存会根据进来的请求

高性能Web服务之haproxy应用详解及实现论坛的动静分离机制

HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上. 下面通过案例架构详解HAproxy应用,架构图如下所示: 以上架构实现过程如下: (1).在node1,node

高性能Web服务之nginx应用详解

一.Nginx特性 * *模块化,目前只能将模块编译进Nginx,暂时不支持动态装卸模块.(httpd优势) * *可靠性,一个主进程(master)控制多个工作进程(worker),工作进程响应用户多个请求(httpd劣势) * *低内存消耗,(httpd劣势) * *支持热部署,(httpd相同) * *支持事件驱动I/O,AI/O,支持mmap(httpd2.4才算支持event,劣势) 二.Nginx基本架构 Nginx由一个master进程生成多个worker进程,每个worker进程

高性能Web服务之Httpd负载均衡Tomcat实现Session Sticky及Session Cluster

Httpd负载均衡Tomcat实现Session Sticky及Session Cluster架构如下所示: 实现过程如下: 配置tomcat服务(tomcat1\tomcat2) (1)安装JDK # rpm -ivh jdk-7u9-linux-x64.rpm  --安装JDK后生成的文件 # cd /usr/java/ ; ll total 4 lrwxrwxrwx  1 root root   16 Sep 27 09:09 default -> /usr/java/latest drw

高性能Web服务之tomcat基础应用详解(一)

Tomcat概述: Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun 和其他一些公司及个人共同开发而成.由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范.因为Tomcat 技术先进.性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目

搭建高性能web服务器之Nginx安装与配置(2.3)

<上一章节介绍了如何获取Nginx以及如何配置.编译.安装运行Nginx.但是很多情况下我们是根据需要来编译Nginx,这里不得不说道nginx的./configure相关参数> 一 Nginx的./configure编译参数说明介绍 可以看出,configure命令至关重要,比如根据自己需要选择性的安装nginx是很有必要的,下文将详细介绍如何使用configure命令使用方法. 我们在解压了nginx的源码后,进入到nginx的源码目录使用"./configure --help&