今天给我的博客托管网站搬家,搬到国外的一个VPS提供商处,系统为CentOS 5.2,在配置memcached的时候,出问题了,具体的表现是
- 刚开始编译、安装memcached并运行,和wordpress mu能够很好的进行配合,通过监控的php程序能够连接并显示memcached运行状态。编译的选项为
./configure --enable-64bit --enable-threads - 但是由于什么原因,系统资源被耗尽了,于是系统被我暴力关闭并重新启动了。
- 系统被暴力重新启动后,memcached无法正常工作,具体表现为监控memcached的php程序无法连接到memcached,使用memcached主页标准的测试程序也显示无法连接。
- 但是可以通过 telnet localhost 11211或者telnet 127.0.0.1 11211来连接到memcached的服务器,并且可以使用version和stats命令获得memcached的状态,但是得到的结果是get set, hits, misses全部为0。
查阅了很多网上的文章,绝大部分的都是连接被拒绝,memcached无法启动这类错误,与我的表现均不相同,没办法,只能摸着石头解决问题了,做了如下尝试均无果(无果指memcached主页提供的php测试程序无法连接到memcached服务器)
- 考虑到可能是暴力关闭系统损坏了文件系统,尝试重新编译libenv和memcached并重新安装,重新启动,无效。
- 考虑到可能刚刚release的版本引入新的bug,故卸载了最新的memcached 1.2.8并编译安装1.2.7,重新启动,无效。
- 考虑到可能是因为防火墙禁止了11211端口,于是运行system-config-securitylevel-tui 程序,将11211端口的tcp连接启用,重新应用防火墙规则,重新启动,无效。
- 使用 netstat -ntlp | grep memcached 结果如下,在memcached的启动脚本中增加了 -l 127.0.0.1 的选项,重新启动,无效。
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 4959/memcached
tcp 0 0 :::11211 :::* LISTEN 4959/memcached - 百思不得其解,最后想到会不会是因为开启了SELinux ,导致无法建立TCP连接呢,于是通过system-config-securitylevel-tui关闭了SELinux,重启,居然可以了!
说明
- 监控其运行的程序为memcache.php,来自http://livebookmark.net/journal/
- 启动和停止脚本来自 http://idcnews.net/html/edu/20080424/300253.html