3

I'm trying to follow How To Share PHP Sessions on Multiple Memcached Servers article and implement that to my environment:

/etc/php.d/memcache.ini:

# grep -v ^\; /etc/php.d/memcache.ini
extension=memcache.so
memcache.allow_failover=1
memcache.session_redundancy=2
session.save_handler=memcache
session.save_path='tcp://192.168.52.143:11211, tcp://192.168.52.142:11211'
# 

phpinfo();:

# php -i | grep -E 'memcache.allow_failover|memcache.session_redundancy|session.save_handler|session.save_path'
memcache.allow_failover => 1 => 1
memcache.session_redundancy => 2 => 2
session.save_handler => memcache => memcache
session.save_path => tcp://192.168.52.142:11211, tcp://192.168.52.143:11211 => tcp://192.168.52.142:11211, tcp://192.168.52.143:11211
# 

both systems are RHEL6 and running php-5.3.3:

# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 6.6 (Santiago)
# rpm -q php php-pecl-memcache
php-5.3.3-40.el6_6.x86_64
php-pecl-memcache-3.0.5-4.el6.x86_64
# 

TCP wise: .142 is able to get to .143:11211, and .143 is able to get to .142:11211, SELinux is in Permissive mode.

I am able to see some chunks stored in one memcached server, but not in another.

What am I doing wrong?

4

That DigitalOcean article I wrote has memcache.session_redundancy, your config file has used memcache.redundancy, both are different and that may be the reason why it isn't working as expected.

The default value of memcache.redundancy is 1 and it works fine for this setup.

extension=memcache.so
memcache.allow_failover=1
memcache.session_redundancy=2
session.save_handler=memcache
session.save_path = 'tcp://192.168.52.143:11211,tcp://192.168.52.142:11211'

http://php.net/manual/en/memcache.ini.php

Edit

Your comment:

IP are in reverse on another server, but syntax is the same.

This is where the problem lies, the session.save_path must be exact on all servers.

So both the servers must have 'tcp://192.168.52.143:11211,tcp://192.168.52.142:11211'

Read Step Two of that article, all 3 servers have the exact same order.

Edit #2

The value of memcache.session_redundancy must be equal to no. of servers + 1 due to a bug in PHP.

So in your case it must be:

memcache.session_redundancy=3
  • You're correct, I did it wrong first time( I just correct it and updated my question with correct output, however still not working for me( – alexus Jan 29 '15 at 18:01
  • @alexus Is the session.save_path directive exactly same on both the systems? – A.Jesin Jan 29 '15 at 18:28
  • I tried the same settings on two CentOS 6.6 VMs and it worked without any issues. Check the phpinfo() page of both servers to make sure the proper configuration is in effect. And how are testing? Are you using a PHP session script? – A.Jesin Jan 30 '15 at 11:21
  • phpinfo(); returns correct values (I updated question with output). I'm comparing Cache Usage between two memcached server and I stated in my original question "I am able to see some chunks stored in one memcached server, but not in another." – alexus Jan 30 '15 at 17:52
  • Why not use the PHP script described in that article. – A.Jesin Jan 31 '15 at 11:01
-1

Only:

memcache.allow_failover=1
memcache.redundancy=2

should be in memcache.ini.

The others should be in php.ini.

  • 1
    On RHEL, /etc/php.d/memcache.ini contains memcache.allow_failover, memcache.redundancy AND session.save_handler, session.save_path out of the box, it's not location of variables that's causing not to work. – alexus Jan 29 '15 at 17:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.