Reputation: 5760
Recently, our PHP web app became unavailable for a few minutes since one of our Memcached nodes died (we use Memcachier as a Memcached provider).
This was our user.ini
configuration (Heroku uses user.ini
as a place where you define your configuration), which worked, but apparently didn't support failover:
session.save_handler=memcached
session.save_path=${MEMCACHIER_SERVERS} # I understand this is redundant, but I just kept it as-is because I didn't write the original user.ini
session.save_path="PERSISTENT=SFSESSID ${MEMCACHIER_SERVERS}"
session.gc_maxlifetime=1209600
session.gc_probability=1
memcached.sess_binary=1
memcached.sess_sasl_username=${MEMCACHIER_USERNAME}
memcached.sess_sasl_password=${MEMCACHIER_PASSWORD}
Our new user.ini
configuration, which is aimed to provide failover capability
session.save_handler=memcached
session.save_path="PERSISTENT=SFSESSID ${MEMCACHIER_SERVERS}"
session.gc_maxlifetime=1209600
session.gc_probability=1
memcached.sess_sasl_username=${MEMCACHIER_USERNAME}
memcached.sess_sasl_password=${MEMCACHIER_PASSWORD}
memcached.sess_binary=1
memcached.sess_number_of_replicas=1
# I also tried memcached.sess_consistent_hash=1, to no avail
The MEMCACHIER_SERVERS
env var looks like this: 123.45678.us-east-1.heroku.prod.memcachier.com:11211,123.45678.us-east-1.heroku.prod.memcachier.com:11211
. I think this means we have 2 nodes.
The problem we are getting with the new configuration are timeouts, and lots of errors regarding PHP session functions (session_start()
, session_write_close()
).
Why is that happening?
Remember, we're not using Memcached inside our PHP code at all, but only as our session storage engine.
I did try contacting Memcachier support, but the customer representative could only provide recommended PHP code (which we don't need).
Upvotes: 9
Views: 387
Reputation: 5760
Since the bounty expired and the question will get closed soon, I'm gonna go ahead with @jdotjdot's suggestion and switch from Memcachier to MemcachedCloud addon.
Upvotes: 1