Linux/KyotoTycoonインストール
目次
- 1 KyotoCabinetが必要なのでインストール
- 2 KyotoTycoonインストール(64bit
- 3 起動・停止スクリプトを/usr/local/sbinと/etc/init.dにコピー
- 4 KyotoTycoon起動
- 5 KyotoTycoon停止
- 6 KyotoTycoon自動起動設定
- 7 起動確認
- 8 起動確認エラー(part1
- 9 起動確認エラー(part2
- 10 デフォルトポート
- 11 手動で起動(一時確認に使用)
- 12 起動オプション
- 13 オプション設定例
- 14 メモリ最適化
- 15 ログの場所
- 16 ファイルハッシュデータベースの場所
- 17 起動バッチにmemcache互換を入れる
- 18 php連携
- 19 参考
KyotoCabinetが必要なのでインストール
yum install gcc-c++ yum install zlib-devel yum install lzo-devel.x86_64 lzma-devel.x86_64 xz-devel.x86_64 cd /usr/local/src wget http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.76.tar.gz tar zxfv kyotocabinet-1.2.76.tar.gz cd kyotocabinet-1.2.76 ./configure make make install
KyotoTycoonインストール(64bit
yum install lua-devel.x86_64 cd /usr/local/src wget http://fallabs.com/kyototycoon/pkg/kyototycoon-0.9.56.tar.gz tar zxfv kyototycoon-0.9.56.tar.gz cd kyototycoon-0.9.56 ./configure make make install
起動・停止スクリプトを/usr/local/sbinと/etc/init.dにコピー
cp /usr/local/src/kyototycoon-0.9.56/lab/ktservctl /usr/local/sbin/ cp /usr/local/src/kyototycoon-0.9.56/lab/ktservctl /etc/rc.d/init.d/ktserver
KyotoTycoon起動
/etc/rc.d/init.d/ktserver start >Executing: ktserver -port 1978 -tout 30 -th 8 -dmn -pid /var/ktserver/pid -log /var/ktserver/log -ls /var/ktserver/casket.kch#bnum=2000000#msiz=128m#dfunit=8 Done
起動エラー修正
/etc/rc.d/init.d/ktserver: line 68: ktserver: command not found $ vi /etc/rc.d/init.d/ktserver - cmd="ktserver" + cmd="/usr/local/bin/ktserver"
もしくはシンボリックを追加
ln -s /usr/local/bin/ktremotemgr /usr/bin/ktremotemgr
KyotoTycoon停止
/etc/rc.d/init.d/ktserver stop
KyotoTycoon自動起動設定
以下コードを/etc/rc.d/init.d/ktserverの4行目に追加する 4 # Startup script for the server of Kyoto Tycoon 5 + # chkconfig: - 80 20 6 + # description: Kyoto Tycoon - KVS Database
/sbin/chkconfig --add ktserver /sbin/chkconfig ktserver on /sbin/chkconfig --list | grep ktserver > ktserver 0:off 1:off 2:on 3:on 4:on 5:on 6:off
起動確認
/usr/local/bin/ktremotemgr set k1 v1 /usr/local/bin/ktremotemgr get k1 >v1 /usr/local/bin/kttimedmgr list -pv casket.kch >k1 v1
起動確認エラー(part1
ktserver: error while loading shared libraries: libkyototycoon.so.2: cannot open shared object file: No such file or directory # vi /etc/ld.so.conf.d/kyoto.conf /usr/local/lib #追加 # ldconfig #conf反映
起動確認エラー(part2
/usr/local/bin/ktremotemgr: DB::open failed: : 6: network error: connection failed
適切にktserverがstartしているか確認
memcache互換で使用している場合は、plex port=が設定されているか。
DBが壊れている可能性があるので一旦退避してみる(退避の間はそのアクセスできません)
mv /var/ktserver/casket.kch /var/ktserver/casket_bk.kch
デフォルトポート
1978 TokyoTyrantと同じなので注意
手動で起動(一時確認に使用)
/usr/local/bin/ktserver \ -port 1978 \ -tout 10 \ -th 16 \ -log /var/ktserver/log -ls \ -ulog /var/ktserver/ulog -ulim 256m \ -sid 1 \ -bgs /var/ktserver/snapshot -bgsi 180 -bgsc lzo \ -pid /var/ktserver/kt.pid \ -plsv /usr/local/kyototycoon/libexec/ktplugservmemc.so \ -plex "port=11401#opts=f#tout=10" \ "/var/ktserver/db_casket.kch#opts=l#bnum=20000000#msiz=12g#dfunit=8"
memcachedプロトコルを使う場合のポートは11401とした
起動オプション
th=8 処理スレッド数 bnum=2000000 バケット数は100万レコードの2倍値 opts=ls データベースオプションは、4バイトアドレッシング、線形リスト ktopts=p データは永続化 msiz=12g DBファイルの先頭2GB分をmmapでマップしてIOを効率化することを意味する(搭載メモリが16Gぐらいだと12Gで設定 dfunit 8個のフラグメンテーションを検出した際に解消 ktcapsiz=10g 最大メモリ使用量。(LRU)
参考:http://blog.kazupon.jp/post/20476065695/kt-msgpack-fork
参考:http://seesaawiki.jp/w/kurt0027/d/kyototycoon
参考:http://www.slideshare.net/estraier/kyoto-tycoon-guide-in-japanese
オプション設定例
普通のキャッシュサーバ
#bnum=20000000#ktcapsiz=10g
永続的キャッシュサーバ
ktserver ... casket.kch#opts=l#bnum=2000000#msiz=1g#dfunit=8
参考:http://www.slideshare.net/estraier/kyoto-tycoon-guide-in-japanese
参考:http://fallabs.com/blog-ja/promenade.cgi?id=98
メモリ最適化
デフォでは使えないので必ずメモリ数は変更する
$ vi /etc/rc.d/init.d/ktserver 26 dbname="$basedir/casket.kch#bnum=2000000#msiz=12g#dfunit=8"
サーバが16GB搭載してれば12GBぐらいとする(msiz=12g
サーバが6GB搭載してれば4GBぐらいとする(msiz=4g
サーバが1GB搭載してれば600MBぐらいとする(msiz=600m
ログの場所
tail -f /var/ktserver/log
ファイルハッシュデータベースの場所
ls -ltA /var/ktserver/casket.kch
起動バッチにmemcache互換を入れる
デフォルトでは互換ではない
$ vi /etc/rc.d/init.d/ktserverに以下を入れる
67 fi 68 + cmd="$cmd -plsv /usr/local/src/kyototycoon-0.9.56/ktplugservmemc.so" 69 + cmd="$cmd -plex port=11401#opts=f#tout=10" 70 cmd="$cmd $dbname"
/usr/local/src/kyototycoon-0.9.56/ktplugservmemc.soは適宜locateで確認して存在するktplugservmemc.soを入れる
php連携
memcacheプロトコルがまんま使えるのでmemcache接続コードのportを変更するだけ
参考
http://cloud-berry.jp/wordpress/?p=161
バックアップなど http://d.hatena.ne.jp/fat47/?of=43