facebook twitter hatena line email

Linux/KyotoTycoonインストール

提供: 初心者エンジニアの簡易メモ
2015年5月27日 (水) 02:56時点におけるAdmin (トーク | 投稿記録)による版 (起動確認エラー(part2)

移動: 案内検索

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を変更するだけ


参考

http://cloud-berry.jp/wordpress/?p=161