「Linux/KyotoTycoonインストール」の版間の差分
(→起動確認エラー(part2) |
(→centos7でgetpidエラーが出た場合) |
||
(同じ利用者による、間の9版が非表示) | |||
行4: | 行4: | ||
yum install lzo-devel.x86_64 lzma-devel.x86_64 xz-devel.x86_64 | yum install lzo-devel.x86_64 lzma-devel.x86_64 xz-devel.x86_64 | ||
cd /usr/local/src | cd /usr/local/src | ||
− | wget http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2. | + | wget http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.78.tar.gz |
− | tar zxfv kyotocabinet-1.2. | + | tar zxfv kyotocabinet-1.2.78.tar.gz |
− | cd kyotocabinet-1.2. | + | cd kyotocabinet-1.2.78 |
./configure | ./configure | ||
make | make | ||
行20: | 行20: | ||
make | make | ||
make install | make install | ||
+ | |||
+ | ===centos7でgetpidエラーが出た場合=== | ||
+ | エラーメッセージ | ||
+ | ktdbext.h:274:29: エラー: ‘getpid’ was not declared in this scope | ||
+ | 修正方法として、以下を#includeの並びの下に追加 | ||
+ | $ vi ktdbext.h | ||
+ | #include <unistd.h> | ||
+ | 参考:https://qiita.com/zaneli@github/items/42a07bbed59efdebf779 | ||
==起動・停止スクリプトを/usr/local/sbinと/etc/init.dにコピー== | ==起動・停止スクリプトを/usr/local/sbinと/etc/init.dにコピー== | ||
行57: | 行65: | ||
/usr/local/bin/ktremotemgr get k1 | /usr/local/bin/ktremotemgr get k1 | ||
>v1 | >v1 | ||
− | /usr/local/bin/kttimedmgr list -pv casket.kch | + | /usr/local/bin/kttimedmgr list -pv /var/ktserver/casket.kch |
>k1 v1 | >k1 v1 | ||
==起動確認エラー(part1== | ==起動確認エラー(part1== | ||
ktserver: error while loading shared libraries: libkyototycoon.so.2: cannot open shared object file: No such file or directory | 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/ | + | # vi /etc/ld.so.conf.d/ktserver.conf |
/usr/local/lib #追加 | /usr/local/lib #追加 | ||
# ldconfig #conf反映 | # ldconfig #conf反映 | ||
− | |||
==起動確認エラー(part2== | ==起動確認エラー(part2== | ||
行76: | 行83: | ||
DBが壊れている可能性があるので一旦退避してみる(退避の間はそのアクセスできません) | DBが壊れている可能性があるので一旦退避してみる(退避の間はそのアクセスできません) | ||
mv /var/ktserver/casket.kch /var/ktserver/casket_bk.kch | mv /var/ktserver/casket.kch /var/ktserver/casket_bk.kch | ||
+ | |||
+ | 手動で動かしたものと、portがかぶってる可能性がある。 | ||
+ | |||
+ | 一度、serverを再起動してみる | ||
==デフォルトポート== | ==デフォルトポート== | ||
行130: | 行141: | ||
サーバが6GB搭載してれば4GBぐらいとする(msiz=4g | サーバが6GB搭載してれば4GBぐらいとする(msiz=4g | ||
+ | |||
+ | サーバが1GB搭載してれば600MBぐらいとする(msiz=600m | ||
==ログの場所== | ==ログの場所== | ||
行140: | 行153: | ||
デフォルトでは互換ではない | デフォルトでは互換ではない | ||
− | $ vi /etc/rc.d/init.d/ | + | $ vi /etc/rc.d/init.d/ktserver |
− | + | 上記に以下を入れる | |
67 fi | 67 fi | ||
68 + cmd="$cmd -plsv /usr/local/src/kyototycoon-0.9.56/ktplugservmemc.so" | 68 + cmd="$cmd -plsv /usr/local/src/kyototycoon-0.9.56/ktplugservmemc.so" | ||
行152: | 行165: | ||
memcacheプロトコルがまんま使えるのでmemcache接続コードのportを変更するだけ | 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+] | ||
==参考== | ==参考== |
2022年9月15日 (木) 02:35時点における最新版
目次
- 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 telnetで動作確認
- 20 参考
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.78.tar.gz tar zxfv kyotocabinet-1.2.78.tar.gz cd kyotocabinet-1.2.78 ./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
centos7でgetpidエラーが出た場合
エラーメッセージ
ktdbext.h:274:29: エラー: ‘getpid’ was not declared in this scope
修正方法として、以下を#includeの並びの下に追加
$ vi ktdbext.h #include <unistd.h>
参考:https://qiita.com/zaneli@github/items/42a07bbed59efdebf779
起動・停止スクリプトを/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 /var/ktserver/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/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