利用memcached将服务器上常用的东西保存到内存中可以极大的提高网站的运行速度,并且可以解决php程序键值对共享的问题
还有就是可以实现在负载均衡是session共享.
如何安装?
1.先安装libevent。
这个东西在配置时需要指定一个安装路径,即./configure –prefix=/usr/local;然后make;然后make install;
解压下载的libevent,我的版本是:libevent-2.0.21-stable.tar.gz. 解压命令:
sudo tar -zxvf libevent-2.0.21-stable.tar.gz
进入解压文件目录:cd libevent-2.0.21-stable
编译步骤:
sudo ./configure --prefix=/usr/local sudo make sudo make install
下载最新的 memcached
在执行 ./configure --with-libevent 的路径要和上面的编译路径一致 ,否之会安装失败.
下载地址: http://memcached.org/downloads
wget http://memcached.org/latest tar -zxvf latest cd memcached-1.x.x ./configure --with-libevent=/usr/local/ make && make test && sudo make install
加入系统服务 设置开机自启动
chkconfig --level 2345 memcached on
启动Memcached服务:
1.启动Memcache的服务器端:
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.103 -p 11211 -c 256 -P /tmp/memcached.pid
-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,
-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,
2.如果要结束Memcache进程,执行:
# kill `cat /tmp/memcached.pid`
也可以启动多个守护进程,不过端口不能重复。
开启memcached服务
测试服务
常见问题:
1.如果启动Memcached服务的时候遇到了
/usr/local/bin/memcached: error while loading shared libraries: libevent-1.2.so.1: cannot open shared object file: No such file or directory;
解决方案:
[root@localhost bin] # ln -s / usr / lib / libevent- 1.2 . so . 1 / usr / lib64 / libevent- 1.2 . so . 1
[root@localhost bin] # / usr / local / bin / memcached -d -m 100 -u root -p 12000 -c 1000 -P / tmp / memcached . pid
[root@localhost bin] # ps -aux
可以看到启动的Memcached服务了.
2.把Memcached服务加载到Linux的启动项中.万一机器断电系统重启.那么Memcached就会自动启动了.
假如启动Memcache的服务器端的命令为:
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.141.64 -p 12000 -c 256 -P /tmp/memcached.pid容来自17jquery
想开机自动启动的话,只需在/etc/rc.d/rc.local中加入一行,下面命令
memcached -d -m 10 -p 12000 -u apache -c 256
上面有些东西可以参考一下:即,ip不指定时,默认是本机,用户:最好选择是:apache 或 deamon
这样,也就是属于哪个用户的服务,由哪个用户启动。
3. 使用 ip_hash 策略导致一直访问一台主机.之前没有经验以为没有负载成功. 后来注释掉ip_hash ,采用系统默认的轮询策略,结果正常了. 其实原来也是正常的.
4.负载均衡,memcached没有问题,网站在单台服务器上运行正常,但做了负载均衡(使用的轮询策略)后发现不能正常登录了.
我们遇到的这个问题的原因是,程序在登录时会产生一个验证文件,而文件同步默认是一分钟同步一次,导致该文件在一台服务上产生了,但在另外一台服务器上还没有同步,所以到登陆程序在另外一台服务器上运行时就会登陆不成功.
解决办法:1 共享该目录
2 .改写程序将该验证文件 ,存放到memcach中.
3. 使用远程的云服务器保存文件.