Sphinx (2.0.4) を約 4 年間使用してきましたが、最近 (1 か月前など)、検索が 1 時間に 1 回停止するようになりました。
夜中にすべてのデータの大きな更新がありますが、問題はありません。次に、1 時間ごとに 1 回インデックス作成を実行します。これにより、通常、インデックスに 20 ~ 30 行が追加されます。
したがって、1 時間に 1 回実行される cronjob があります。
#!/bin/bash
date1=`date`
echo "$date1 : Starting indexation..." >> /cyber/indexer-new.log
/usr/local/bin/indexer -c /etc/sphinx.conf newCompanies --noprogress --rotate
date1=`date`
echo "$date1 : Indexation ended" >> /cyber/indexer-new.log
date1=`date`
echo "$date1 : Restart searchd" >> /cyber/indexer-new.log
/usr/local/bin/searchd -c /etc/sphinx.conf --stopwait
exitCode=`echo $?`
echo "Exit code (--stopwait) : $exitCode" >> /cyber/indexer-new.log
/usr/local/bin/searchd -c /etc/sphinx.conf
exitCode=`echo $?`
echo "Exit code (restart sphinx) : $exitCode" >> /cyber/indexer-new.log
date1=`date`
echo "$date1 : searchd restarted.." >> /cyber/indexer-new.log
exit 0
結果は次のようになります (searchd.log) が、70000 行の binlog 再生 (1560 binlog ファイル) が空のように見えます。
[Wed May 18 10:01:14.541 2016] [11983] rotating indices (seamless=1)
[Wed May 18 10:01:14.545 2016] [11983] caught SIGTERM, shutting down
[Wed May 18 10:01:16.953 2016] [11983] shutdown complete
[Wed May 18 10:01:16.954 2016] [11982] Child process 11983 has been finished, exit code 0. Watchdog finishes also. Good bye!
[Wed May 18 10:01:16.957 2016] [13505] Child process 13506 has been forked
[Wed May 18 10:01:16.958 2016] [13506] listening on all interfaces, port=9312
[Wed May 18 10:01:16.958 2016] [13506] listening on all interfaces, port=9306
[Wed May 18 10:01:36.131 2016] [13506] rotating index 'newCompanies': success
[Wed May 18 10:01:36.133 2016] [13506] binlog: replaying log /usr/local/var/data/binlog.001
[Wed May 18 10:01:36.133 2016] [13506] binlog: replay stats: 0 rows in 0 commits; 0 updates; 0 indexes
でも今はこんな感じ
[Sun Jul 31 10:00:57.285 2016] [28792] rotating indices (seamless=1)
[Sun Jul 31 10:00:57.292 2016] [28792] caught SIGTERM, shutting down
[Sun Jul 31 10:00:57.294 2016] [28792] rotating index 'newCompanies': started
[Sun Jul 31 10:00:57.404 2016] [28792] rotating index 'newCompanies': success
[Sun Jul 31 10:00:57.404 2016] [28792] rotating index: all indexes done
[Sun Jul 31 10:01:00.166 2016] [28792] shutdown complete
[Sun Jul 31 10:01:00.167 2016] [28791] Child process 28792 has been finished, exit code 0. Watchdog finishes also. Good bye!
[Sun Jul 31 10:01:00.175 2016] [29781] Child process 29782 has been forked
[Sun Jul 31 10:01:00.175 2016] [29782] listening on all interfaces, port=9312
[Sun Jul 31 10:01:00.175 2016] [29782] listening on all interfaces, port=9306
[Sun Jul 31 10:03:01.946 2016] [29782] binlog: replaying log /usr/local/var/data/binlog.001
[Sun Jul 31 10:03:01.953 2016] [29782] binlog: replay stats: 0 rows in 0 commits; 0 updates; 0 indexes
[Sun Jul 31 10:03:01.953 2016] [29782] binlog: finished replaying /usr/local/var/data/binlog.001; 0.0 MB in 0.000 sec
2分のギャップに注意してください。
cronjob ログは次のようになります。
Mon Aug 1 11:00:01 EDT 2016 : Starting indexation...
Mon Aug 1 11:01:17 EDT 2016 : Indexation ended
Mon Aug 1 11:01:17 EDT 2016 : Restart searchd
Exit code (--stopwait) : 0
Exit code (restart sphinx) : 0
Mon Aug 1 11:04:40 EDT 2016 : searchd restarted..
1 か月前とは異なり (何も変わっていません)、searchd の再起動には 2 ~ 3 分かかるようです。また、終了コード 0 は、stopwait または searchd の起動中にエラーが発生したことを意味します。
それらのバイナリログが作成される原因を見つけることができないようで、どこを見ればよいかわかりません。何が問題なのかわかりますか?問題の詳細を調べるために見なかったログは?
ありがとう