LNMP 开启 Memcached 内存缓存加速网站

Memcached 是一个高性能的分布式内存对象缓存系统。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。

最近倡萌也给自己的阿里云服务器安装了 Memcached,效果似乎还不错哦。

测试环境:阿里云 CentOS 6.5 64位,军哥的 LNMP一键安装包配置的环境 1.2。

安装 Memcached

lnmp1.2 :进入lnmp解压后的目录,执行:./addons.sh install memcached (这是军哥lnmp内置的安装脚本,其他自己配置的环境,自己google安装方法吧)

可以根据自己的需求选择php-memcache或php-memcached扩展,目前discuz x使用的是前者,功能上php-memcached更强大一些。如果要使用下文的 WordPress 插件,请选择php-memcache(也就是1),否则会有问题
输入对应的序号,回车,再次确认回车开始安装。

安装完以后,就可以正常启用了。

WordPress 开启 Memcached 缓存

下载 WordPress Memcached 插件,解压后,将 object-cache.php 上传到 wp-content 目录(不是 wp-content/plugins/),这样 WordPress 会自动检查在 wp-content 目录下是否有 object-cache.php 文件,如果有,直接调用它作为 WordPress 对象缓存机制。

注意:如果你的服务器安装了多个 WordPress,请确保每个WordPress站点使用了不同的数据库前缀,如果前缀一样,比如都是 wp_ ,就很可能造成冲突,因为每个网站的数据都通过内存进行缓存,前缀一样就会打架啦!

为你的 WordPress 站点开启了 memcached 缓存以后,就没必要安装 DB Cache Reloaded Fix 这类数据库缓存插件了。

查看 Memcached 缓存情况

我们需要使用 telnet 命令查看,首先检测一下是否已安装 telnet 包

1
rpm -qa |grep telnet

如果安装了,会返回相关版本

telnet-0.17-41.el5
telnet-server-0.17-41.el5

如果没有安装,运行下面的命令,注意在root下安装

1
2
3
yum install xinetd
yum install telnet
yum install telnet-server

特别说明:telnet服务要依靠xinetd服务启动,所以要先安装xinetd服务。所以我们要先安装xinetd,再安装telnet-server。

然后链接到 telnet 服务

1
telnet 127.0.0.1 11211

如果链接成功,会返回:

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

然后输入

1
stats

回车,就可以看到 Memcached 的缓存情况

STAT pid 20439  —— Memcached 进程的ID
STAT uptime 179982 —— 进程运行时间
STAT time 1382361665 ——当前时间
STAT version 1.4.15 —— Memcached 版本
STAT libevent 1.4.13-stable
STAT pointer_size 32
STAT rusage_user 21.916668
STAT rusage_system 40.576831
STAT curr_connections 11
STAT total_connections 329
STAT connection_structures 23
STAT reserved_fds 20
STAT cmd_get 2363348 —— 总共获取数据的次数(等于 get_hits + get_misses )
STAT cmd_set 279971 —— 总共设置数据的次数

STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 2286284 —— 命中了多少次数据,也就是从 Memcached 缓存中成功获取数据的次数
STAT get_misses 77064 —— 没有命中的次数

STAT delete_misses 30803
STAT delete_hits 48876
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 574591015
STAT bytes_written 4353057466
STAT limit_maxbytes 67108864 —— 总的存储大小,默认为 64M
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 262144
STAT hash_is_expanding 0
STAT bytes 4717345 —— 当前所用存储大小
STAT curr_items 5654
STAT total_items 58461
STAT expired_unfetched 17
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 49
END

以上数据的命中率:2286284/2363348 = 96.7% 说明当前命中率是比较高的。

如果你要清空现有数据,可以使用下面的命令:

1
stats reset

要退出 telnet,输入组合键 Ctrl+] 出现

telnet>

输入 quit 即可退出。

1.关闭Memcached

直接使用 kill 进程ID 即可,比如上面信息显示的进程ID为20439,那就使用 kill 20439

2.重新启动Memcached,并且修改内存等参数,样例如下(修改最大内存为 1024M,最大连接数为 4000):

1
memcached -d -m 1024 -u root -l 127.0.0.1 -p 11211 -c 4000 -P /tmp/memcached.pid 11211

更详细的有些参数介绍如下:

-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2015/12/26作者: 胡倡萌

一个疯狂的 WordPress 爱好者,喜欢折腾 WordPress 主题,分享 WordPress 资源。如果你也喜欢 WordPress,欢迎和我一起交流!

30 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???

  1. office教程网说道:
    19#

    使用了Memcached 还需要使用其他的缓存服务或插件吗?比如wp-super-cache,xcache,eAccelerator什么的,会不会冲突?我装了memcached后没什么感觉 ;

    • 胡倡萌说道:

      如果你网站流量本身就不多的话,用不用都可以,Memcached 是内存缓存,如果是其他同类的缓存就不需要安装了,如果其他插件有相同或相近的功能,也不要开启

  2. 快播电影说道:
    18#

    不知道效果如何?

  3. 森云说道:
    17#

    我想问一下,对于网站是1G内存的和2G内存的设置memcached的内存大小和连接数分别是多少啊萌哥

  4. 学霸网说道:
    16#

    服务器安装了Memcached,还需要在wordpress安装memcached插件吗?

    • 胡倡萌说道:

      文章中有详细提到的,自己看下

  5. 袁源说道:
    15#

    我装的是 php7-memcached ,所以 WordPress 用不了对吗?

  6. peter说道:
    14#

    按照按照此方法操作了一次 页面空白php5.4

  7. iralance说道:
    13#

    最好用内网ip吧。。。

  8. memcached说道:
    12#

    http://www.wooyun.org/bugs/wooyun-2013-037301

    LNMP1.2无法关闭11211
    6.13军哥已修复这个问题

  9. 木木说道:
    11#

    请问这个一般会占多少内存,小内存的VPS应该不适用吧?

  10. Qa说道:
    10#

    我的网站memcached内存老是爆了,插件没自动清理内存。
    分配给memcached的是256MB的内存。小了吗

  11. cxd说道:
    9#

    怎么确定网站成功安装memcached呢?

    • 胡倡萌说道:

      你可以在探针或 phpinfo 查看是否开启,或者使用文章介绍到的 telnet 命令查看

      • cxd说道:

        探针的话
        PHP已编译模块检测下如果有memcached就表示已经开启了是吗

  12. 手心里的沙子说道:
    8#

    我按照您的方法去配了,配置memcached成功了,但是放上那个object-cache.php文件,打开网站就会一片空白,不知道是什么问题引起的,我用的php是5.4.24 用的是lnmp一键脚本配置的服务器

  13. uuauto说道:
    7#

    这个memcached可以定义失效时间不,默认是30天??

  14. 欲思博客说道:
    6#

    倡萌好!我装了Memcached 之后怎么感觉网站的速度更慢了呢。是什么原因呢。我也是用的阿里云,是我的宽带低么。我的是1M的。你博客访问速度很快。是因为用了七牛么。

    • 胡倡萌说道:

      请确保你安装了 Memcached 并且使用相关的WP插件配置好,使用文章介绍的方法检测是否生效。网站速度快不快,一些必要的优化是需要的。比如图片多的时候,使用lazyload延迟加载,按照所需大小截取缩略图(原图太大啦),使用第三方图片托管,可以减轻服务器的压力

      • 欲思博客说道:

        yum install telnet -server安装错误。变成 rpmdb open failed了。网上找了几个方法好像都不好使。

        • Erit说道:

          你把-server前面的空格去掉就ok啦

    • 胡倡萌说道:

      还有,如果你开启了阿里云的云盾的话,可能会由于占用过多CPU导致网站访问慢 http://www.cmhello.com/aliyun-yundun.html

  15. 小青你说道:
    5#

    萌倡这里的LNMP笔记都看了,发现以前折腾LNMP遇到的问题都能解决,非常不错。 :twisted: ,Memcached 以前在AMH上装过一次,运行的是WP,后面有次把Memcached卸载后出现网站访问空白,是不是哪里缓存文件关系。

    • 胡倡萌说道:

      这个我没有遇到过,不太清楚

  16. beyondme37说道:
    4#

    vps,不是云主机,不知道能不能用额

    • 胡倡萌说道:

      其实所谓云主机,也就是VPS

      • beyondme37说道:

        嗯。好,我试试,谢谢。

  17. 门软网说道:
    3#

    这句:yum install telnet -server 搞了半天没成功,于是我把-server去掉了。OK了、、、感谢教程,同军哥的LNMP已经阿里云centos32 :razz:

  18. 吾爱实惠网说道:
    2#

    高端了,还没玩过

  19. Yusky说道:
    1#

    感觉APC更好用些

扫一扫,用手机访问本站

扫一扫,用手机访问本站