阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 6.6下Memcached 源码安装配置

440次阅读
没有评论

共计 8500 个字符,预计需要花费 22 分钟才能阅读完成。

主机环境: CentOS 6.6 x86_64

一, 安装 Memcached

1, 由于 Memcached 依赖 libevent 库, 用它做 Socket 的处理, 因此, 我们需要安装 libevent 库, 我这里就用 yum 来安装了.

yum install libevent

2, 到官网下载 memcached 的源码包.  http://memcached.org

CentOS 6.6 下 Memcached 源码安装配置

最新版是 v1.4.24 

#wget

#tar xf  memcached-1.4.24.tar.gz

#cd memcached-1.4.24

编译安装

# yum install cyrus-sasl-devel.x86_64 

# ./configure  –prefix=/usr/local/memcached_1.4.24 –enable-sasl

但是有报错

CentOS 6.6 下 Memcached 源码安装配置

没有找到 libevent 库文件

 

# rpm -ql libevent

发现是安装到 /usr/lib64 目录下的.

3, 继续安装,,,,,  继续报错,, 算了, 我们直接编译安装最新版 libevent 吧

libevent 的官网是 http://libevent.org/

CentOS 6.6 下 Memcached 源码安装配置

直接下载最新的

# wget

# tar xf libevent-2.0.22-stable.tar.gz

# cd libevent-2.0.22-stable

# ./configure –prefix=/usr/local/libevent_2.0.22

# make && make install

4, 继续安装 memcached

# ./configure  –prefix=/usr/local/memcached_1.4.24 –enable-sasl –with-libevent=/usr/local/libevent_2.0.22/

# make && make install

5, 安装完成后  试运行下 memcached 看有无报错

CentOS 6.6 下 Memcached 源码安装配置

来看下安装后, 的目录树

CentOS 6.6 下 Memcached 源码安装配置

文件很少, 可执行程序只有 bin 目录下的 memcached 一个, 因此只能通过它来启动 memcached 服务. 我们来看下 memcached 命令的用法. 使用 memcached -h 查看.

6, memcached 参数详解

-p: 指定 tcp 协议的监听端口, 默认 11211

-U: 指定 UDP 协议的监听端口, 默认也是 11211

-s: 指定 unix 套接字路径, 使用 unix 套接字来监听.

-a: 设置套接字的掩码. 格式为八进制, 默认 0700

-l: 指定监听的网络地址. 默认为 0.0.0.0

-d: 将 memcached 作为守护进程, 在后台运行.

-r: 内核文件的最大值限制.

-u: 指定 memcached 的运行身份.

-m: 指定用于存储缓存条目的最大内存值, 单位为 MB (默认 64MB)

-M: 始终不删除过期的旧数据, 而是在内存耗尽过后直接报错.

-c: 限制同时的最大连接数.(默认 1024)

-k: 锁定所有分页内存.

注意: 这里是一个限制值, 限制了你可以锁定多少内存, 如果分配了超过限定值的操作, 将会失败. 因此要针对启动 memcached 的用户进程正确的限制, 而不是 - u 参数指定用户运行, 在 sh 下, 这个操作也可以使用 ulimit -S -l NUM_KB 来完成. 对于一个大的缓存来说, 这个有点危险, 因此查看 README 文档和 memcached 主页去查看有关他的配置建议.

-v: 详细模式

-vv: 更详细,,

-vvv: 最详细,,

-h: 帮助信息.

-i: 打印 memcached 和 libevent 许可.

-P: 保存 PID 文件的路径及文件名, 该参数只有在使用 - d 选项后才生效.

-f: 设置块 (chunk) 大小的增长因子, 默认 1.25

-n: 指定分配给 key value flags 的最小空间. 默认 48

-L: 尽量使用大内存页 (如果有效的前提下). 增加内存页的大小能够减少 TLB 失误数, 并且能提高性能. 为了能够从操作系统获取大的内存页,memcached 将会分配所有的缓存条目到一个大的快(chunk) 中. 这种机制与所使用的操作系统有关, 只有你的操作系统支持才有效.

-D: 使用 <char> 作为 key 前缀 和 ID 的分隔符, 用在状态报告中, 默认的 <char> 是冒号 : , 如果使用该参数指定了分隔符, 那么在状态收集中会自动打开, 如果没有设置, 那么需要向服务器发送 stats detail on 命令才会打开.

-t: 使用的线程数. 默认为 4

-R: 通过该参数来设定一个限制值, 定义每一个事件 (event) 请求的最大值, 以便保护能够处理完成一个单独的客户端请求, 一旦一个连接超过了这个值, 那么 memcached 将会试图通过其他的连接来处理 I /O. 它的默认值为 20

-C: 禁用 CAS

-b: 设置等待 (积压) 队列的限制, 默认 1024

-B: 设置绑定的协议 – 可选的有 ascii,binary 或 auto(默认).

-I: 设定每一个块 (slab) 页的大小, 默认的大小为 1MB, 最小为 1KB, 最大为 128MB, 调整这个值能够改变对缓存条目大小的限制. 当心这个操作同样会增加 slab 的数目(使用 - v 来查看), 并且会使用 memcached 的所有内存.

7, 启动 memcached

下面是启动 memcached 的两种方式.

第一种:

# ./memcached -u memcached -p 11211 -m 64m -vv

第二种方式:

# ./memcached -d -m 10 -u memcached -l 127.0.0.1 -p 11211 -c 50 -P /tmp/memcached.pid -vv

以下是输出内容:

slab class  1: chunk size        96 perslab  10922

slab class  2: chunk size      120 perslab    8738

slab class  3: chunk size      152 perslab    6898

…..

slab class  40: chunk size    616944 perslab      1

slab class  41: chunk size    771184 perslab      1

slab class  42: chunk size  1048576 perslab      1

<26 server listening (auto-negotiate)

<27 send buffer was 124928, now 268435456

<28 server listening (udp)

<30 server listening (udp)

<29 server listening (udp)

<27 server listening (udp)

分析如下:

CentOS 6.6 下 Memcached 源码安装配置

这里的 slab 就是相当于 memcached 提供的缓存,memcached 服务器堆内存的分配单位就是 slab, 一个 slab 大小在默认情况下是 1MB, 而每一个 slab 又被分为若干个 chunk, 就像对磁盘或内存的使用一样一层一层的分割直到最小单位, 而这里 chunk 就是最小的单位了, 然后在这些 chunk 中保持我们缓存的条目 item, 而 chunk 的大小也就完全一样了, 因此, 对于一个字节或者十个字节可能使用的 chunk 数目是一样多的, 也就是说最少也存在着浪费.

还有一点需要说明的是, 在每一个 chunk 中除了保存缓存条目的值 (value) 以外, 还有结构体, key .

图中 chunk 的增长大小就是因为有默认 -f 1.25 的增长因子作用.

添加 memcached 可执行程序的软连接到系统 PATH 目录下

ln -s /usr/local/memcached_1.4.24/bin/memcached /usr/bin/

8,memcached 的其他工具

在 memcached 的源码包中有一个 scripts 目录, 里面由一些自带的脚本和工具.

8.1, damemtop

  该工具使用 perl 模块, 如果以前没有安装过这些模块, 那么只有安装过后才可以使用.

8.1.1, 安装 perl 相关模块

  下面是 AnyEvent  YAML  TermReadKey 三个模块的安装.

# yum install perl perl-TermReadKey perl-YAML.noarch  -y

# ./damemtop

YAML Error: Couldn’t open /etc/damemtop.yaml for input:\n

  Code: YAML_LOAD_ERR_FILE_INPUT

at ./damemtop line 543

运行脚本报错,,  提示需要 /etc/damemtop.yaml 文件

那么可以吧 scripts 目录下的 damemtop.yaml 复制到 /etc/ 目录下

分析配置文件 damemtop.yaml

这个文件的格式采用了 YAML(是 YAML Ain’t a Markup Language 的缩写). 下面看一看配置文件内容:

CentOS 6.6 下 Memcached 源码安装配置

做好必要的配置后, 就可直接运行 damemtop 了

如图:

CentOS 6.6 下 Memcached 源码安装配置

8.2 memcached-sysv 服务脚本

顾名思义, 该文件是个系统服务脚本.

# cp memcached.sysv /etc/init.d/memcached

# chkconfig –add memcached

查看服务脚本, 由于我们的 memcached 是源码定制安装, 所以需要注意脚本中的黑色字体部分,

#! /bin/sh

#

# chkconfig: – 55 45

# description:  The memcached daemon is a network memory cache service.

# processname: memcached

# config: /etc/sysconfig/memcached

# Source function library.

. /etc/rc.d/init.d/functions

PORT=11211

USER=memcached

MAXCONN=1024

CACHESIZE=64

OPTIONS=””

if [-f /etc/sysconfig/memcached];then

  . /etc/sysconfig/memcached

fi

# Check that networking is up.

if [“$NETWORKING” = “no”]

then

  exit 0

fi

RETVAL=0

prog=”memcached”

start () {

  echo -n $”Starting $prog: “

  # insure that /var/run/memcached has proper permissions

  chown $USER /var/run/memcached

  daemon memcached -d -p $PORT -u $USER  -m $CACHESIZE -c $MAXCONN -P /var/run/memcached/memcached.pid $OPTIONS

  RETVAL=$?

  echo

  [$RETVAL -eq 0] && touch /var/lock/subsys/memcached

}

stop () {

  echo -n $”Stopping $prog: “

  killproc memcached

  RETVAL=$?

  echo

  if [$RETVAL -eq 0] ; then

      rm -f /var/lock/subsys/memcached

      rm -f /var/run/memcached.pid

  fi

}

restart () {

  stop

  start

}

# See how we were called.

case “$1” in

  start)

      start

      ;;

  stop)

  stop

  ;;

  status)

  status memcached

  ;;

  restart|reload)

  restart

  ;;

  condrestart)

  [-f /var/lock/subsys/memcached] && restart || :

  ;;

  *)

  echo $”Usage: $0 {start|stop|status|restart|reload|condrestart}”

  exit 1

esac

exit $?

———————————————

# mkdir /var/run/memcached

# chown memcached:memcached /var/run/memcached

# service memcached restart  // 看能否正常重启和启动服务.

当然如配置文件所示, 响应的参数可以单独写到 /etc/sysconfig/memcached 文件中, 这样 memcached 的配置文件结构更清晰.

8.3,  memcached-tool

memcached-tool 是基于 perl 的脚本, 使用前务必确认已经安装好 perl

# ./memcached-tool  // 直接运行工具查看效果

CentOS 6.6 下 Memcached 源码安装配置

执行没有参数的脚本后, 会给出使用示例.

六种格式: (1.4.5 版本之前只有四种格式, 新版新增了 settings 和 sizes , 而且提示信息也明确说明了 sizes 命令是一个开发人员选项, 实际生产环境并不推荐使用)

格式 1: memcached-tool ip:port display

CentOS 6.6 下 Memcached 源码安装配置

格式 2: memcached-tool ip:port

这种方式同 格式 1 是一种默认方式, 它的默认参数为 display

格式 3: memcached-tool ip:port stats

限制详细信息, 比如 memcached 版本号, 进程 pid 号,libevent 版本号, 线程数, 写入计数, 错误计数, 总连接数, 当前连接数,,,,,,

格式 4: memcached-tool ip:port dump

dump 参数会将内存中现有的缓存对象即 键 - 值 转存出来.

例如: memcached-tool 127.0.0.1:11211 dump > memcached.txt

9 查看 memcached 服务的运行情况

telnet 到 memcached 服务器后有很多的命令可以使用, 如 add get set incr decr replace delete 等,, 除此之外还有一系列的获取服务器信息的命令, 这部分命令都是以 stats 开头的.

memcached 提供了许多命令, 可以通过 telnet 工具来执行, 当然你也可以使用 PHP 提供的 Memcached::getStats($cmd) 来执行.

使用 telnet 命令

[root@_212 scripts]# telnet 127.0.0.1 11211

Trying 127.0.0.1…

Connected to 127.0.0.1.

Escape character is ‘^]’.

stats

STAT pid 23736                //Memcached 的进程 pid

STAT uptime 1495                    // 服务从启动到现在所经过的时间, 单位是秒

STAT time 1442132353                // 服务器所在主机当前系统的时间, 单位是秒

STAT version 1.4.24                  //Memcached 服务器的版本

STAT libevent 2.0.22-stable          //Memcached 服务器上 libevent 的版本

STAT pointer_size 64                // 所在主机操作系统的指针大小, 一般为 32 或 64  32 位系统 64 位系统

STAT rusage_user 0.018997            // 进程累积使用的用户时间

STAT rusage_system 0.030995          // 进程累积使用的系统时间

STAT curr_connections 10            // 当前打开的连接数

STAT total_connections 36            // 所有连接数

STAT connection_structures 11        // 服务器分配的连接结构数

STAT reserved_fds 20                //misc fds 使用数

STAT cmd_get 4                      // 执行 get 命令的总数

STAT cmd_set 2                      // 执行 set 命令的总数

STAT cmd_flush 0                    // 执行 flush 命令的总数

STAT cmd_touch 0                    // 执行 touch 次数,touch 可以刷新过期时间

STAT get_hits 3                      //get 命令的命中次数

STAT get_misses 1                    //get 命令的失败次数

STAT delete_misses 0                //delete 命令的失败次数

STAT delete_hits 0                  //delete 命令的命中次数

STAT incr_misses 0                  //incr 命令的失败次数

STAT incr_hits 0                    //incr 命令的命中次数

STAT decr_misses 0                  //decr 命令的失败次数

STAT decr_hits 0                    //decr 命令的命中次数

STAT cas_misses 0                    //cas 命令的失败次数

STAT cas_hits 0                      //cas 命令的命中次数

STAT cas_badval 0                    // 擦除坏数据值的次数

STAT touch_hits 0                    //touch 命令的命中次数

STAT touch_misses 0                  //touch 命令的失败次数

STAT auth_cmds 0                    //authentication 执行的次数

STAT auth_errors 0                  //authentication 执行失败的次数

STAT bytes_read 698                  // 服务器从网络上读取到的字节数 

STAT bytes_written 15636            // 服务器从网络上写入的字节数 

STAT limit_maxbytes 67108864        // 最大可用内存限制, 就是在命令行中的 -m 值

STAT accepting_conns 1              // 当前接受的连接数

STAT listen_disabled_num 0          //

STAT threads 4                      // 最大可用的线程数

STAT conn_yields 0                  //memcached 启动至今有多少次打开的连接因为内部请求数达到 -R 参数指定的限值而被动放弃的

STAT hash_power_level 16            //hashpower 的 level,可以在启动的时候设置 $ memcached -o hashpower=20

STAT hash_bytes 524288              // 内存使用总量单位为 byte

STAT hash_is_expanding 0            // 是否正在扩大 hash 表

STAT malloc_fails 0                  //

STAT bytes 72                        // 所有被存储条目的字节数

STAT curr_items 1                    // 当前缓存的条目数

STAT total_items 2                  // 缓存条目的总数

STAT expired_unfetched 0            //item 过期之前没有被 touch 过,也就是放进去之后就没更新过过期时间的数目

STAT evicted_unfetched 0            //item 替换覆盖之前没有被 touch 过,也就是放进去之后就没更新过过期时间的数目

STAT evictions 0                    // 为了给行的数据项目释放空间, 而从缓存移除的缓存对象数目

STAT reclaimed 0                    //memcached 启动至今有多少次在存储数据的时候使用了过期数据的空间

STAT crawler_reclaimed 0            // 被检索器回收的数目

STAT crawler_items_checked 0        //

STAT lrutail_reflocked 0            //

END

Memcached 安装及启动脚本 http://www.linuxidc.com/Linux/2013-07/87641.htm

PHP 中使用 Memcached 的性能问题 http://www.linuxidc.com/Linux/2013-06/85883.htm

Ubuntu 下安装 Memcached 及命令解释 http://www.linuxidc.com/Linux/2013-06/85832.htm

Memcached 的安装和应用 http://www.linuxidc.com/Linux/2013-08/89165.htm

使用 Nginx+Memcached 的小图片存储方案 http://www.linuxidc.com/Linux/2013-11/92390.htm

Memcached 使用入门 http://www.linuxidc.com/Linux/2011-12/49516p2.htm

Memcached 的详细介绍:请点这里
Memcached 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-09/123019.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计8500字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7997840
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...