能夠採用定時器控制,清空日誌的辦法: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