HTTPのセッションをmemcachedでメモリ管理したいのだが・・・
環境
- Apache 2.4.23
- php 7.0.13
- memcached 1.4.33 (ElastiCache)
症状
sessionへのアクセス時にエラーになり、$_SESSIONが使えない
session.lazy_write = Off
を設定すると少し動作が改善されて数回に1回の割合で$_SESSIONへのアクセスがエラーになる。
memcached.sess_lock_wait_min = 250
を設定すると、さらに安定するが、数十回に1回ぐらいの割合で$_SESSIONへのアクセスがエラーになる。
workaround
memcached をやめて、redis に変更(php?のバージョンアップで改善されると思われるので・・・)。
https://pecl.php.net/package/redis/3.1.1 このあたりからモジュールをインストール
[Session] session.save_handler = redis session.save_path = "aws-XXXXX-XXXXX.XXXXX.XXXXX.cache.amazonaws.com:6379"
この設定だけで、動作確認OK。
AWSなので、memcached/redisどちらを使ってもコストは一緒。
最終的に、redisのクラスタ構成で安定稼働を目指します。
参考:
https://github.com/magento/magento2/issues/5319
https://forums.aws.amazon.com/thread.jspa?threadID=240538