码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2016-09-07 16:01:31      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:facebook   应用程序   加速器   服务器   数据库   

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架构应用所有内容!

本文出自 “Opensamlee” 博客,请务必保留此出处http://gzsamlee.blog.51cto.com/9976612/1847291

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

标签:facebook   应用程序   加速器   服务器   数据库   

原文地址:http://gzsamlee.blog.51cto.com/9976612/1847291

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!