PHP memcached session redundancy

7,455

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
Share:
7,455

Related videos on Youtube

alexus
Author by

alexus

Consulting | alexus.biz Dmitry Chorine | LinkedIn a1exus (a1exus) on Twitter Verify a Red Hat Certified Professional | redhat.com

Updated on September 18, 2022

Comments

  • alexus
    alexus almost 2 years

    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?

  • alexus
    alexus over 9 years
    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
    alexus over 9 years
    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(
  • A.Jesin
    A.Jesin over 9 years
    @alexus Is the session.save_path directive exactly same on both the systems?
  • A.Jesin
    A.Jesin over 9 years
    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?
  • alexus
    alexus over 9 years
    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."
  • A.Jesin
    A.Jesin over 9 years
    Why not use the PHP script described in that article.
  • alexus
    alexus over 9 years
    I'm using drupal.org/project/memcache and it doesn't matter if I'm using that project or your test PHP script as it's able to store chunks in one of memcache server, and the rest is up to memcache.ini configuration (variables that you described in your article).
  • A.Jesin
    A.Jesin over 9 years
    Try the solution under Edit #2, it should work. I've asked DigitalOcean to update that article.
  • alexus
    alexus over 9 years
    I was reading another post that describes same thing as well : serverfault.com/questions/164350/…