Linux: memcache的安装和启动、停止、重启, 检查memcache server是否开启

memcache是高性能,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。据说官方所说,其用户包括twitter、digg、flickr等,都是些互联网大腕呀。目前用memcache解决互联网上的大用户读取是非常流行的一种用法。

更多可以参考:

PHP: Memcached安装, Memcache/Memcached的PHP操作手册, Memcached使用, Memcached教程

Memcached数据库管理, 基于Web的Memcached管理工具:phpMemAdmin

在PHP中使用memcached提高动态网站性能, memcached, memcache, memcached数据库缓存类

 

安装

sudo apt-get install memcached

 

启动memcache服务

memcached -d -m 128 -p 11111 -u root
启动方式:  
-d 以守护程序(daemon)方式运行  
-u root 指定用户,如果当前为root ,需要使用此参数指定用户  
-P /tmp/a.pid保存PID到指定文件  
内存设置:  
-m 1024 数据内存数量,不包含memcached本身占用,单位为MB  
-M 内存不够时禁止LRU,报错  
-n 48初始chunk=key+suffix+value+32结构体,默认48字节  
-f 1.25 增长因子,默认1.25  
-L启用大内存页,可以降低内存浪费,改进性能  
连接设置:  
-l 127.0.0.1 监听的IP 地址,本机可以不设置此参数  
-p 11211 TCP端口,默认为11211,可以不设置  
-U 11211UDP端口,默认为11211,0为关闭  
并发设置:  
-c 1024最大并发连接数,默认1024,最好是200  
-t 4线程数,默认4。由于memcached采用NIO,所以更多线程没有太多作用  
-R 20每个event连接最大并发数,默认20  
-C禁用CAS命令(可以禁止版本计数,减少开销)

 

检测memcache服务

1、查看启动的memcache服务:

netstat -lp | grep memcached

 

2、查看memcache的进程号(根据进程号,可以结束memcache服务:“kill -9 进程号”)

ps -ef | grep memcached 

 

memcache的运行状态可以方便的用stats命令显示。首先用telnet 127.0.0.1 11211这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache的状态。这些状态的说明如下:

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 当前线程数

 

关闭memcache服务

kill `cat /tmp/memcached.pid`

以及通过 ps -ef | grep memcached  获取进程号,然后运行

kill -9 进程号

 

定时任务检查memcache服务是否开启,否则自动开启

memcache_check.sh

#!/usr/bin/env bash
#check memcacheprocess and restart if down

mm_bin"/usr/bin/memcached"  #可以通过 `whereis memcached` 来获取
mm_log="/var/www/html/var/memcached_check.log"
mm_ports=("11211" "11212")
mm_param=("-d -m 20480 -p 11211 -u root" "-d -m 256 -p 11212 -u root")
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

添加新行

# check memcached server
* * * * * /bin/sh /var/www/html/shell/memcache_check.sh > /dev/null 2>&1

上面 memcache_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-`

crontab 的一些资料:

基本格式:
*  *  *  *  *  command
分  时 日  月  周  命令

第1列表示分钟1~59 每分钟用 * 或 */1 表示,*/10表示每10分钟
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)

 

memcache使用方法

移步到:Memcached教程

 

memcache界面管理系统

移步到:Memcached数据库管理, 基于Web的Memcached管理工具:phpMemAdmin

 

 

本文:Linux: memcache的安装和启动、停止、重启, 检查memcache server是否开启

发表评论