「Linux/KyotoTycoonインストール/rocky10」の版間の差分
(ページの作成:「==KyotoCabinetの準備== 開発ツールを入れる <pre> dnf groupinstall "Development Tools" -y dnf install -y \ zlib-devel \ lzo-devel \ xz-devel \ lua-devel </pre>...」) |
(相違点なし)
|
2026年4月7日 (火) 16:57時点における版
目次
- 1 KyotoCabinetの準備
- 2 KyotoCabinetが必要なのでインストール
- 3 KyotoTycoonの準備
- 4 KyotoTycoonインストール(64bit
- 5 KyotoTycoonライブラリ登録
- 6 起動・停止
- 7 KyotoTycoon起動
- 8 KyotoTycoon停止
- 9 KyotoTycoon自動起動設定
- 10 起動確認
- 11 起動確認エラー(part1
- 12 起動確認エラー(part2
- 13 デフォルトポート
- 14 手動で起動(一時確認に使用)
- 15 起動オプション
- 16 オプション設定例
- 17 メモリ最適化
- 18 ログの場所
- 19 ファイルハッシュデータベースの場所
- 20 起動バッチにmemcache互換を入れる
- 21 php連携
- 22 telnetで動作確認
- 23 参考
KyotoCabinetの準備
開発ツールを入れる
dnf groupinstall "Development Tools" -y dnf install -y \ zlib-devel \ lzo-devel \ xz-devel \ lua-devel
KyotoCabinetが必要なのでインストール
cd /usr/local/src wget https://dbmx.net/kyotocabinet/pkg/kyotocabinet-1.2.80.tar.gz tar xvf kyotocabinet-1.2.80.tar.gz cd kyotocabinet-1.2.80 ./configure make -j$(nproc) make install
共有ライブラリ登録
echo "/usr/local/lib" > /etc/ld.so.conf.d/kyotocabinet.conf ldconfig
確認
$ ldconfig -p | grep kyoto libkyotocabinet.so.16 (libc6,x86-64) => /usr/local/lib/libkyotocabinet.so.16 libkyotocabinet.so (libc6,x86-64) => /usr/local/lib/libkyotocabinet.so $ /usr/local/bin/kcutilmgr version Kyoto Cabinet 1.2.80 (16.14:6) on Linux
KyotoTycoonの準備
dnf install -y gcc gcc-c++ make lua-devel export CXXFLAGS="-std=gnu++11 -fpermissive"
KyotoTycoonインストール(64bit
cd /usr/local/src wget https://dbmx.net/kyototycoon/pkg/kyototycoon-0.9.56.tar.gz tar xvf kyototycoon-0.9.56.tar.gz cd kyototycoon-0.9.56 export CPPFLAGS="-I/usr/local/include" export LDFLAGS="-L/usr/local/lib" ./configure make -j$(nproc) make install
return 301なエラーが出る場合
エラー詳細
ktremotedb.h:301:16: エラー: cannot convert ‘bool’ to ‘char*’ in return 301 | return false;
ktremotedb.h の以下を修正して、再コンパイル
- return false; + return NULL;
KyotoTycoonライブラリ登録
echo "/usr/local/lib" > /etc/ld.so.conf.d/kyoto.conf ldconfig
確認
ldconfig -p | grep kyoto
起動・停止
mkdir /var/db/kt /usr/local/bin/ktserver /var/db/kt/test.kch
[ctrl+c]で停止
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 -host localhost -port 1978 foo bar $ /usr/local/bin/ktremotemgr get -host localhost -port 1978 foo bar
起動確認エラー(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/ktserver.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
手動で動かしたものと、portがかぶってる可能性がある。
一度、serverを再起動してみる
デフォルトポート
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を変更するだけ
telnetで動作確認
$ telnet 127.0.0.1 11401 set key1 0 3600 6 value1 get key1 VALUE key1 0 6 value1 END
終了はctrl+]
参考
http://cloud-berry.jp/wordpress/?p=161
バックアップなど http://d.hatena.ne.jp/fat47/?of=43
