repcachedのmemcached 1.4対応
mdounin(Maxim Dounin)さんが開発しているmemcached、あるいはrepcachedのforkがあるのですが、そこではrepcachedがmemcached 1.4.5に対応しています。
https://github.com/mdounin/memcached/tree/repcached
KLabで開発されていたrepcached(2.2まであります)は、memcached 1.2.8までの対応ですので、モダンなmemcached 1.4系を使うことができなかったわけですが、このmdounin版を使えばレプリ機能を使いつつ、memcached 1.4を使うことができるわけです。(ただ、おそらくマルチスレッドは無効化される。)
mdounin版の最新のものはrepcached 2.3と称していますが、あくまでブランチコードと思われます。なお、この最新版は、repcachedの問題であるところの「CPU使用率100%問題」の修正も入っています。
https://github.com/mdounin/memcached/commit/90ae0dfb122d4a13e3350eb6efd315f431e96772
これを見ると、一時的なネットワーク問題が起きた際の挙動が怪しいのを修正したとか何とか。
テストコードを見ると、以下のようなことをやっています。
- ノードBのみ一時停止(suspend)
- ノードAに大量更新
- ノードAを一時停止・ノードBを再開
- ノードBに大量更新
- ノードAを再開
- 1秒sleep
- ノードAからget、ノードBからget
ちょっと試した感じでは、レプリ先プロセスを止めて(ポートは開いたまま)大量の更新を走らせると、CPU使用率が100%になるような…。これが起きなくなるようです。