「Linux/KyotoTycoonインストール/rocky10」の版間の差分
(→KyotoTycoon自動起動設定) |
|||
| 行94: | 行94: | ||
ExecStart=/usr/local/bin/ktserver \ | ExecStart=/usr/local/bin/ktserver \ | ||
-port 1978 \ | -port 1978 \ | ||
| − | -tout | + | -tout 30 \ |
| − | -th | + | -th 8 \ |
-log /var/ktserver/log -ls \ | -log /var/ktserver/log -ls \ | ||
-ulog /var/ktserver/ulog -ulim 256m \ | -ulog /var/ktserver/ulog -ulim 256m \ | ||
| 行102: | 行102: | ||
-pid /var/ktserver/kt.pid \ | -pid /var/ktserver/kt.pid \ | ||
-plsv /usr/local/libexec/ktplugservmemc.so \ | -plsv /usr/local/libexec/ktplugservmemc.so \ | ||
| − | -plex port=11401#opts=f#tout= | + | -plex port=11401#opts=f#tout=30 \ |
| − | /var/ktserver/db_casket.kch#opts=l#bnum= | + | /var/ktserver/db_casket.kch#opts=l#bnum=2000000#msiz=1g#dfunit=8 |
Restart=always | Restart=always | ||
| 行125: | 行125: | ||
状況確認 | 状況確認 | ||
systemctl status ktserver | systemctl status ktserver | ||
| − | |||
==起動オプション== | ==起動オプション== | ||
2026年4月7日 (火) 17:32時点における版
目次
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
KyotoTycoon自動起動設定
memcachedプロトコルを使う場合のポートは11401とした
vi /etc/systemd/system/ktserver.service
[Service] Type=simple ExecStart=/usr/local/bin/ktserver \ -port 1978 \ -tout 30 \ -th 8 \ -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/libexec/ktplugservmemc.so \ -plex port=11401#opts=f#tout=30 \ /var/ktserver/db_casket.kch#opts=l#bnum=2000000#msiz=1g#dfunit=8 Restart=always RestartSec=3 [Install] WantedBy=multi-user.target
読み込み
sudo systemctl daemon-reload
起動 sudo systemctl start ktserver
自動起動 sudo systemctl enable ktserver
状況確認 systemctl status ktserver
起動オプション
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
メモリ最適化
デフォでは使えないので必ずメモリ数は変更する 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
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
