Linux/KyotoTycoonインストール
提供: 初心者エンジニアの簡易メモ
目次
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
起動確認エラー(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
KyotoCabinet-1.2.75から1.2.76、 kyototycoon-0.9.55から0.9.56に変更(2014/7時点で最新に)したらなおった。
適切にktserverがstartしているか確認
portの設定があっているか
デフォルトポート
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個のフラグメンテーションを検出した際に解消 kcapsiz=10g 最大メモリ使用量。
参考:http://blog.kazupon.jp/post/20476065695/kt-msgpack-fork
参考:http://seesaawiki.jp/w/kurt0027/d/kyototycoon
オプション設定例
普通のキャッシュサーバ
#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
ログ
tail -f /var/ktserver/log
起動バッチに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を変更するだけ