facebook twitter hatena line email

Linux/KyotoTycoonインストール/rocky10

提供: 初心者エンジニアの簡易メモ
2026年4月7日 (火) 18:12時点におけるAdmin (トーク | 投稿記録)による版 (dir生成)

移動: 案内検索

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

dir生成

sudo mkdir -p /var/ktserver
sudo mkdir -p /var/ktserver/log
sudo mkdir -p /var/ktserver/ulog
sudo mkdir -p /var/ktserver/snapshot

起動・停止のテスト確認

/usr/local/bin/ktserver /var/ktserver/test_casket.kch

[ctrl+c]で停止

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

バックアップなど http://seesaawiki.jp/w/kurt0027/d/kyototycoon