facebook twitter hatena line email

「Linux/KyotoTycoonインストール/rocky10」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(KyotoTycoon自動起動設定)
(dir設定)
 
(同じ利用者による、間の6版が非表示)
行72: 行72:
 
  ldconfig -p | grep kyoto
 
  ldconfig -p | grep kyoto
  
==起動・停止==
+
==dir設定==
 
<pre>
 
<pre>
mkdir /var/db/kt
+
#dir生成
/usr/local/bin/ktserver /var/db/kt/test.kch
+
sudo mkdir -p /var/ktserver
 +
sudo mkdir -p /var/ktserver/log
 +
sudo mkdir -p /var/ktserver/ulog
 +
sudo mkdir -p /var/ktserver/snapshot
 +
#権限変更
 +
sudo chown -R rocky:rocky /var/ktserver
 +
sudo chmod -R 755 /var/ktserver
 +
#logファイル設置
 +
sudo touch /var/ktserver/log/ktserver.log
 +
sudo chown rocky:rocky /var/ktserver/log/ktserver.log
 +
sudo chmod 644 /var/ktserver/log/ktserver.log
 
</pre>
 
</pre>
  
[ctrl+c]で停止
+
==起動・停止のテスト確認==
 +
<pre>
 +
/usr/local/bin/ktserver /var/ktserver/test_casket.kch
 +
</pre>
  
==KyotoTycoon起動==
+
[ctrl+c]で停止
/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自動起動設定==
+
==KyotoTycoonサービス設定==
 
memcachedプロトコルを使う場合のポートは11401とした
 
memcachedプロトコルを使う場合のポートは11401とした
  
行112: 行122:
 
</pre>
 
</pre>
  
読み込み
+
変更後に、以下、読み込みを必ず行う。
<pre>
+
sudo systemctl daemon-reload
sudo systemctl daemon-reload
+
</pre>
+
  
 
起動
 
起動
sudo systemctl start ktserver
+
sudo systemctl start ktserver
  
 
自動起動
 
自動起動
sudo systemctl enable ktserver
+
sudo systemctl enable ktserver
  
 
状況確認
 
状況確認
systemctl status ktserver
+
systemctl status ktserver
  
 
==起動オプション==
 
==起動オプション==

2026年4月7日 (火) 18:20時点における最新版

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設定

#dir生成
sudo mkdir -p /var/ktserver
sudo mkdir -p /var/ktserver/log
sudo mkdir -p /var/ktserver/ulog
sudo mkdir -p /var/ktserver/snapshot
#権限変更
sudo chown -R rocky:rocky /var/ktserver
sudo chmod -R 755 /var/ktserver
#logファイル設置
sudo touch /var/ktserver/log/ktserver.log
sudo chown rocky:rocky /var/ktserver/log/ktserver.log
sudo chmod 644 /var/ktserver/log/ktserver.log

起動・停止のテスト確認

/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