PHP Warning: Unknown: Failed to write session data (memcache). Please verify that the current setting of session.save_path is correct (tcp://192.168.0.51:11211) in Unknown on line 0
少々厄介なのですが、この問題を解決する方法をご存じの方はいらっしゃいませんでしょうか?
行った対策:
http://ja.pastebin.ca/1457941
※ 長文のため、こちらに記載しました。
【WEBサーバ環境】
・CentOS 5.3 64bit
・PHP 5.2.6
・pecl memcache 2.2.5
・session_nameはPHPSESSIDではなく、SSIDに変更
【WEBサーバ環境で設定されているphp.iniの該当箇所】
session.save_handler = memcache
session.save_path = tcp://192.168.0.51:11211
【memcacheサーバ環境】
・CentOS 5.3 64bit
・Memcache 1.2.6(最大割り当ては1.2GB)
※ WEBサーバが複数あるため、セッションの保存先を同じLANに存在する1台のMemcacheサーバを指定して稼働させています。
もし解決法をご存じの方や試してみて見ると良さそうな事、その他不具合を減らす方法などがございましたら、お知恵を貸して頂けますでしょうか。何卒お願い致します。
>※ WEBサーバが複数あるため、セッションの保存先を同じLANに存在する1台のMemcacheサーバを指定して稼働させています。
セッションはWEBサーバー毎に独自に設定されるので、このように共有すると、バッティングします。
MEMCACHE INFOによると、空きは200MB以上常にあるのでFreeが一時的に不足しているという事ではない上、
リクエスト回数の平均は14.92 cache requests/secondと、それほど極端に多い訳ではありません。
また、この不具合が増える時間帯は毎日異なり、アクセスが集中する時間やnetstatでの接続数の上下具合との因果性は見られませんでした。
当初メモリ割り当ては1GBで空き容量が200MBを割る程度だったのですが余裕を持って1.2GBにしてみても変化はありませんでした。
次に、session.save_pathにpersistent=1&weight=2&timeout=2&retry_interval=15などを指定すると
session.nameで指定した物ではなくオリジナルのPHPSESSIDとなる為、リトライ先を増やす形で
以下の様にカンマでつなげた所、特に上記のエラーが発生する量に変化はありませんでした。
session.save_path = tcp://192.168.0.51:11211,tcp://192.168.0.51:11211,tcp://192.168.0.51:11211
そして次にpeclのmemcacheを2.2.5-stableから3.0.4-betaに変更した所、
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 21777846 bytes) in Unknown on line 0
というエラーが多発し、メモリオーバーフローしたような雰囲気でサーバがハングアップします。
Failed to write session dataとなった時に起こる症状としては、セッションに保存してあったデータが消えてしまいます。
$ cat /etc/sysconfig/memcached
PORT="11211"
USER="nobody"
MAXCONN="10000"
CACHESIZE="2000"
OPTIONS=""
tamuponと申します。
私が関わってる案件でも同現状が発生して困っております。
当事象は解決されていれば、解決方法教えて頂ければ助かります。
よろしくお願いします!!!