- 浏览: 2509560 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (676)
- linux运维 (157)
- php (65)
- mysql (78)
- nginx (27)
- apche (18)
- framework (6)
- windows (9)
- IDE工具 (23)
- struts2 (7)
- java (13)
- 移动互联网 (14)
- memcache redis (23)
- shell基础/命令/语法 (37)
- shell (50)
- puppet (4)
- C (11)
- python (9)
- 产品经理 (27)
- Sphinx (4)
- svn (12)
- 设计构建 (12)
- 项目管理 (44)
- SEO (1)
- 网站架构 (26)
- 审时度势 (42)
- 网络 (14)
- 激发事业[书&视频] (81)
- 其它 (12)
- 摄影 (8)
- android (21)
最新评论
-
zhongmin2012:
原文的书在哪里
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
renzhengzhi:
你好,请问个问题,从master同步数据到slave的时候,s ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
ibc789:
你好,看了你的文章,我想请教个问题, 我在用 redis的时候 ...
redis 的两种持久化方式及原理 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
为什么会有Memcache和memcached两种名称?
其实Memcache是这个项目的名称,而memcached是它服务器端的主程序文件名,知道我的意思了把~~~~。一个是项目名称,一个是主程序文件名
Linux下Memcache服务器端的安装
服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-1.3.0 。
下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz
另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,libevent的最新版本是libevent-1.3。(如果你的系统已经安装了libevent,可以不用安装)
官网:http://www.monkey.org/~provos/libevent/
下载:http://www.monkey.org/~provos/libevent-1.3.tar.gz
用wget指令直接下载这两个东西.下载回源文件后。
1.先安装libevent。这个东西在配置时需要指定一个安装路径,即./configure –prefix=/usr;然后make;然后make install;
2.再安装memcached,只是需要在配置时需要指定libevent的安装路径即./configure –with-libevent=/usr;然后make;然后make install;
这样就完成了Linux下Memcache服务器端的安装。详细的方法如下:
1.分别把memcached和libevent下载回来,放到 /tmp 目录下:
# cd /tmp
# wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz
# wget http://www.monkey.org/~provos/libevent-1.2.tar.gz
2.先安装libevent:
# tar zxvf libevent-1.2.tar.gz
# cd libevent-1.2
# ./configure -prefix=/usr
# make
# make install
3.测试libevent是否安装成功:
# ls -al /usr/lib | grep libevent
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
-rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3
-rw-r–r– 1 root root 454156 11?? 12 17:38 libevent.a
-rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3
还不错,都安装上了。
4.安装memcached,同时需要安装中指定libevent的安装位置:
# cd /tmp
# tar zxvf memcached-1.2.0.tar.gz
# cd memcached-1.2.0
# ./configure -with-libevent=/usr
# make
# make install
如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。
安装完成后会把memcached放到 /usr/local/bin/memcached ,
5.测试是否成功安装memcached:
# ls -al /usr/local/bin/mem*
-rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached
-rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug
安装Memcache的PHP扩展
1.在http://pecl.php.net/package/memcache 选择相应想要下载的memcache版本。
2.安装PHP的memcache扩展
tar vxzf memcache-2.2.1.tgz
cd memcache-2.2.1
/usr/bin/phpize
./configure -enable-memcache -with-php-config=/usr/bin/php-config -with-zlib-dir
make
make install
3.上述安装完后会有类似这样的提示:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/
4.把php.ini中的extension_dir = “./”修改为
extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/”
5.添加一行来载入memcache扩展:extension=memcache.so
memcached的基本设置:
1.启动Memcache的服务器端:
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.12.201 -p 13001 -c 256 -P /tmp/memcached.pid
-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.12.201,
-p是设置Memcache监听的端口,我这里设置了13001,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,
2.如果要结束Memcache进程,执行:
# kill `cat /tmp/memcached.pid`
也可以启动多个守护进程,不过端口不能重复。
3.重启apache,service httpd restart
Memcache环境测试:
运行下面的php文件,如果有输出This is a test!,就表示环境搭建成功。开始领略Memcache的魅力把!
<?php
$mem = new Memcache;
$mem->connect("192.168.12.201", 13001);
$mem->set('key','This is a test!', 0, 60);
$val = $mem->get('key');
echo $val;
?>
========================================================php.ini session memcache
实现Session的功能,基本上是通过
* 设置客户端的Cookie来保存SessionID,
* 然后把用户的数据保存在服务器端,最后通
* Cookie中的Session Id来确定一个数据是否是用户的,
原始
session.save_handler = files
mem:
session.save_handler = memcache
session.save_path = "tcp://192.168.0.26:13001,tcp://192.168.0.26:13002"
session.use_cookies = 1
//memcache 配置数组
$memcache_servers=array(
array("host"=>"192.168.0.26",
"port"=>"14001",
"persistent"=>true,
"weight"=>1,
"timeout"=>1,//1为默认值,单位为秒
"retry_interval"=>2,
"status"=>true,
"failure_callback"=>"memcacheConnectLog"
),
array("host"=>"192.168.0.26",
"port"=>"14002",
"persistent"=>true,
"weight"=>1,
"timeout"=>1,//1为默认值,单位为秒
"retry_interval"=>2,
"status"=>true,
"failure_callback"=>"memcacheConnectLog" //写入日志函数
)
);
====================监控
netstat -an | grep memcache
ps -ef|grep memcache
cd memcache-2.2.4
[zhangy@BlackGhost memcache-2.2.4]$ ls |grep .php
example.php
memcache.php
run-tests.php
把memcache.php文件,cp到你的web服务器上面
cp memcache.php /home/zhangy/www/test
vim /home/zhangy/www/test/memcache.php 打开修改配置
define('ADMIN_USERNAME','zhangy'); // Admin Username
define('ADMIN_PASSWORD','adsfadf'); // Admin Password
$MEMCACHE_SERVERS[] = '192.168.12.201:13001'; // add more as an array
$MEMCACHE_SERVERS[] = '192.168.12.201:13002'; // add more as an array
能过url访问memcache.php
Hits: 29 (67.4%) #点击了29
Misses: 14 (32.6%) #字面意思,丢失了14。我这样说肯定有很多人想,这14是memcache没起作用。
对的,是没有起作用,第一次都不会起作用,如果不明白,去搞清楚,memcache的调用原理。
-----------------
telnet 192.168.12.201 13001 这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache的状态
这些状态的说明如下:
+K `"y`#t yt0
pid | memcache服务器的进程ID |
uptime | 服务器已经运行的秒数 |
time | 服务器当前的unix时间戳 |
version | memcache 版本 |
pointer_size | 当前操作系统的指针大小(32位系统一般是32bit) |
rusage_user | 进程的累计用户时间 |
rusage_system | 进程的累计系统时间 |
curr_items | 服务器当前存储的items数量 |
total_items | 从服务器启动以后存储的items总数量 |
bytes | 当前服务器存储items占用的字节数 |
curr_connections | 当前打开着的连接数 |
total_connections | 从服务器启动以后曾经打开过的连接数 |
connection_structures | 服务器分配的连接构造数 |
cmd_get | get命令(获取)总请求次数 |
cmd_set | set 命令(保存)总请求次数 |
get_hits | 总命中次数 |
get_misses | 总未命中次数 |
evictions | 为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items) |
bytes_read | 总读取字节数(请求字节数) |
bytes_written | 总发送字节数(结果字节数) |
limit_maxbytes | 分配给memcache的内存大小(字节) |
threads | 当前线程数 |
===========================shell脚本检查memcache进程并自动重启
vim /etc/memcached_check.sh
#!/bin/sh
#check memcache process and restart if down
mm_bin="/usr/local/bin/memcached"
mm_log="/usr/local/webserver/apache2/logs/memcached_check.log"
mm_ports=("13002")
mm_param=("-d -m 500 -u www -p 13002 -c 256")
mm_count=${#mm_ports[@]}
t=$(date -d "today" +"%Y-%m-%d %H:%M:%S")
i=0
while [ $i -lt $mm_count ]
do
mm_exists=`ps -ef|grep "memcached"|grep "${mm_ports[$i]}"|grep -v grep|wc -l`
if [ "$mm_exists" == "0" ]; then
${mm_bin} ${mm_param[$i]} 2>&1 > /dev/null &
echo "${t} : ${mm_bin} ${mm_param[$i]}" >> ${mm_log}
fi
let i++
done
============
chmod +x /etc/memcached_check.sh
添加为自动执行:
#crontab -e
0-59 * * * * /bin/sh /etc/memcached_check.sh
系统每10分钟会自动执行memcached_check.sh
*/10 * * * * /bin/sh /etc/memcached_check.sh
-----------
#!/bin/sh
#check memcache process and restart if down
mm_bin="/usr/local/bin/memcached"
mm_log="/home/xxx/memcached_check.log"
mm_ports=("11211" "11212")
mm_param=("-d -m 20480 -p 11211 -u www" "-d -m 256 -p 11212 -u www")
mm_count=${#mm_ports[@]}
t=$(date -d "today" +"%Y-%m-%d %H:%M:%S")
i=0
while [ $i -lt $mm_count ]
do
mm_exists=`ps -ef|grep "memcached"|grep "${mm_ports[$i]}"|grep -v grep|wc -l`
if [ "$mm_exists" == "0" ]; then
${mm_bin} ${mm_param[$i]} 2>&1 > /dev/null &
echo "${t} : ${mm_bin} ${mm_param[$i]}" >> ${mm_log}
fi
let i++
done
======================
添加为自动执行:
#crontab -e
*/10 * * * * /bin/sh /home/xxx/memcached_check.sh
系统每10分钟会自动执行memcached_check.sh
---------------------
备用shell语句:
#检查mysql状态
PORT=`netstat -na | grep "LISTEN" | grep "3306" | awk '{print $4}' | awk -F. '{print $2}'`
if [ "$PORT" -eq "3306" ]
#检查mysql占CPU负载
mysql_cpu=`top -U root -b -n 1 | grep mysql | awk '{print $10}'|awk -F. '{print $1}'`
#如果mysql cpu负载大于80,则重启mysql
if [ "$mysql_cpu" -ge "80" ]
#获得相关信息
ps -ef|grep "memcached"|grep -v "grep"|wc -l
ps -ef|grep "memcached"|grep "11211"|grep -v "grep"|wc -l
ps aux|grep "memcached"|grep -v "grep"|awk '{sum+=$4;n++};END{print sum}'
ps aux|grep "memcached"|grep -v "grep"|awk '{printf $1}'
MYPORT=`netstat -na|grep "tcp"|grep "3306"|awk -F[:" "]+ '{print $5}'`
HAPORT=`netstat -na|grep "udp"|grep "694"|awk -F[:" "]+ '{print $5}'`
PING=`ping -c 5 www.linuxtone.org|awk -F, '/packets/{print $3}'|cut -c 2-|awk '{print $1}'`
DB1IP=`ifconfig eth0|awk '/inet/{print $2}'|cut -c 6-`
-----------------------
shell if语句的一些资料:
–b 当file存在并且是块文件时返回真
-c 当file存在并且是字符文件时返回真
-d 当pathname存在并且是一个目录时返回真
-e 当pathname指定的文件或目录存在时返回真
-f 当file存在并且是正规文件时返回真
-g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
-h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
-k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
-p 当file存在并且是命令管道时返回为真
-r 当由pathname指定的文件或目录存在并且可读时返回为真
-s 当file存在文件大小大于0时返回真
-u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
-w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
-o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。
UNIX Shell 里面比较字符写法:
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 小于等于
-ge 大于等于
-z 空串
= 两个字符相等
!= 两个字符不等
-n 非空串
- libevent-1.2.tar.gz (404.1 KB)
- 下载次数: 5
- memcached-1.2.0.rar (139.8 KB)
- 下载次数: 5
- memcache-2.2.5.rar (35.2 KB)
- 下载次数: 4
发表评论
-
通过Keepalived实现Redis Failover自动故障切换功能[实践分享]
2015-03-12 17:10 7370参考资料:http://patrick-tang.blog ... -
Redis学习手册(主从复制)
2015-03-12 17:05 7308一、Redis的Replication: ... -
redis 的两种持久化方式及原理
2015-03-12 16:52 63217Redis是一种高级key-value数据库。它跟memc ... -
Redis指令手册中文版
2014-08-08 17:09 915连接控制QUIT :退出,关 ... -
Redis服务的监控
2013-01-17 16:00 6644redis 监控工具安装配置http://blog.sin ... -
【汇总】redis
2012-04-16 13:51 1414http://bbs.chinaunix.net/thread ... -
memcache运用代码
2011-07-22 11:38 1379interface ICache { pub ... -
memcache 丢数据解决方案
2011-07-01 11:17 2661一小时以内数据变化都存放到memcached中,无论数据读取或 ... -
Memcached repcached同步
2011-06-10 14:10 2151#安装 wget http://downloads.sour ... -
memcached命中率问题
2011-06-09 21:14 1972http://www.iteye.com/topic/2256 ... -
php遍历memcache所有键值
2011-05-31 17:56 4335很有用的东东,PHP遍历MEMCACHE的所有键,在做管理me ... -
memcached全面剖析和深度剖析
2011-05-15 14:43 1644Memcached深度分析(原创) 2009年2月11日 ... -
【监控】netstat+telnet+m-top+phpmemcached
2011-03-31 22:01 29901G=1024*1024*1024=1073741824 by ... -
关于session和memcache的若干问题
2010-09-20 15:17 5554=============================== ... -
Memcached深度分析----转新浪开发者博客
2009-07-11 22:36 1634http://blog.developers.api.sina ... -
多台memcache 研究
2009-07-11 13:07 4813第一种方法是通过设置特殊key前缀实现分布,基本可以实现mem ... -
Memcache分组和同步机制的实现--这不是memcache集群了么
2009-07-05 21:53 13017首先我们明确了解就是Memcache是一个简单、快速、高效的分 ... -
memcached全面剖析–5. memcached的应用和兼容程序
2009-07-05 21:31 1567memcached的连载终于要结束了。到上次为止,我们介绍了与 ... -
[推荐]memcached全面剖析–4. memcached的分布式算法:Consistent Hashing
2009-07-05 21:20 2482第2次 、 第3次 由前坂介绍了memcached的内部情况 ... -
【汇总】Memcache
2009-07-01 11:40 3657memcached全面剖析和深度剖析.rar ...
相关推荐
CentOS 5.4下的Memcache安装步骤分享,想要配置Linux+Nginx+PHP+Memcached运行环境的朋友可以参考下
memcache的配置及使用——memcache及其客户端telnet
centos apache nginx mongodb memcache等等 完整版配置和优化
本文档是linux下面的lamp配置步骤,是本人经过多次尝试总结的,参考了网上很多文档,所需软件均能从网上下载,希望对初学者有所帮助centos5.5(redhat5) + php5.2.6 + apache 2.0.55 + mysql 5.1.47 + Zend...
MySQL 5.0.89 Nginx 0.8.33 或 0.7.65 (可选) ...CentOS 最小化安装,然后先新建一个 repo # vi /etc/yum.repos.d/centos.21andy.com.repo 放入如下内容 [21Andy.com] name=21Andy.com Packages for Enter
3. 配置Memcached 代码如下:vim /etc/sysconfig/memcached#文件中内容如下,按需要修改:PORT=”11211″ #端口USER=”root” #用户名MAXCONN=”1024″ #最大连接数CACHESIZE=”64″ #内存大小OPTIONS=”” #附加参数...
2)安装操作系统环境:CentOS-6.5,(其它linux操作系统请自行尝试)。 3)本软件安装步骤详解:http://blog.csdn.net/clevercode/article/details/45579837。 4) 博客专栏地址(Linux常用软件安装与配置):...
记忆基准memtier_benchmark是Redis Labs(以前称为Garantia Data Ltd.)开发的命令行实用程序,... 需要以下工具自动配置自动制作pkg-config GNU make GCC C ++编译器CentOS 6.x版在CentOS 6.x系统上,使用以下步骤安装
php-memcache 扩展 git vim 关于 nginx 的使用 默认这个 box 我已经配置好 LNMP 环境了。PHP 的项目直接放在当前文件夹的 php 文件夹内就可以了。(默认配置的是 php 文件夹,如果要换其他文件夹,请自行修改 nginx ...
Nginx_0.8.x_+_PHP_5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器,在centos下配置mail服务器及memcache 服务器
2 增强对ubuntu系统的支持,修正在ubuntu系统下安装可能出现无法添加系统账号的bug 3 nginx升级至1.2.9,apache升级至2.2.24,mysql升级至5.1.69,pureftp升级至1.0.36 4 安装脚本大量调整和优化 5 增加debian系统的支持...
安装/配置 CentOS 安装第三方源: epel-release Nux Dextop 安装在线编译环境(yum): 安装PHP: php-devel php-cli php-commmon php-fpm hp-gd php-pecl-memcache php-mysql php-pear php-mbstring php-snmp php-xml...
三、Memcache配置 memcache下载:http://www.qy400.cn/400dianhua/memcached-1.2.1-win32.zip 1、服务端解压缩至c:\windows\system32\ 2、开始->运行->cmd -> c:\windows\system32\memecache.exe -d install c:\...
环境:centOS6.5 memcached版本1.4.25 memcached下载网址: http://memcached.org/downloads 安装libevent 因为官方网站说了,memcached依赖于libevent 使用yum安装 yum install libevent-devel 源码安装 ...
LANMP一键安装包是用Linux Shell语言编写的,用于Linux系统( Redhat / CentOS / Debian / Ubuntu )上一键安装LANMP环境的工具包。二,特点与优势3种Web环境自由组合lnmp , lamp , lanmp (Nginx前端Apache配置...