將Sphinx的日誌放置到/dev/shm裏須要注意的事情

能夠採用定時器控制,清空日誌的辦法:ios

幾種快速清空文件內容的方法:
  $ : > filename #其中的 : 是一個佔位符, 不產生任何輸出.
  $ > filename
  $ echo 「」 > filename
  $ echo /dev/null > filename
  $ echo > filename
  $ cat /dev/null > filename

 

可是,日誌是有必定做用的,好比下面是個例子:Sphinx重建索引失敗安例分析運維

重建Sphinx索引的時候,可使用如下命令:

/sphinx/bin/indexer –rotate idx_name
可是這個命令並非保證必定能重建成功的,有時候重建了以後,發現新的數據並無加入到索引裏,而從日誌能夠看到這樣的記錄:

WARNING: rotating index ‘idx_m_tag’: lock: failed to lock /sphinx/data/idx_m_tag.new.spl: Resource temporarily unavailable; using old index
WARNING: rotating index ‘idx_n_tag’: lock: failed to lock /sphinx/data/idx_n_tag.new.spl: Bad file descriptor; using old index
[Sun Mar 24 06:40:01.084 2013] [12413] rotating finished
日誌記錄了重建索引失敗,繼續使用舊的索引這一事實。

要分析這個緣由,首先要知道sphinx的重建索引的流程,日誌裏記錄的spl文件,實際是一個空文件,只是sphinx加鎖的一個標記而已。重建索引時,會生成新的索引文件,即在原來的文件名字後面加上.new標記爲新文件,舊文件不變。而後重啓searchd進程,因此咱們在執行rotate index的時候會看到這樣的輸出:

rotating indices: succesfully sent SIGHUP to searchd (pid=12413).
searchd進程啓動後,會執行一個操做,把舊文件命名爲.old文件,把.new文件更新爲正常的索引文件名,若是有問題,會有 一個回滾的操做。在這個過程當中,經過對spl這個文件的加鎖和解鎖來進行文件切換。

若是對spl的鎖爭用出現問題,就會致使新的索引文件不生效,這時候的解決辦法是手動重啓searchd進程。

如何避免這個問題,最簡單的就是對sphinx日誌進行監控,經過腳本捕捉到lock spl文件失敗的狀況,立刻處理。

 那麼通常如何在運維中關注索引的生成狀況呢?spa

Nagios監控Sphinx的indexer日誌

http://os.51cto.com/art/201103/247290.htm
相關文章
相關標籤/搜索