Kouhei Sutou
kou****@clear*****
2013年 5月 14日 (火) 18:48:29 JST
須藤です。 In <5191F****@rozet*****> "[groonga-dev,01389] Re: mroongaのメモリ解放方法について" on Tue, 14 May 2013 17:16:49 +0900, 磯部 和広 <k-iso****@rozet*****> wrote: > 10分おきに、キャッシュをクリアしています。 > > これでもまだ固まりますが、 > 固まる頻度 > 固まっている時間 > が、かなり緩和しました。 > ありがとうございます。 おぉ、そうですか。 が、どうして緩和するのかがわかりませんが。。。 もしよかったら以下を試してもらえませんか? 1. 実行する処理を以下のようにする。 1.1. 実行するSQLを出力(echo "SELECT ..."など) 1.2. SQLでFLUSH TABLES;を実行 1.3. SQLでSELECT ...;を実行 1.4. 異常(想定より時間がかかったまたはクラッシュした) かどうかを確認。 異常がなかったら1.1.に戻る。すべてのSELECTを実行済みなら終了。 異常があったら2.へ。 2. クリーンな状態で異常が発生したSELECTを実行し、 異常な状態が再現するか確認 2.1. vmstatでリソースを確認する 2.2. mysqldを終了する。psで確実に終了していることを確認する。 2.3. vmstatでリソースを確認する 2.4. mysqldを起動する 2.5. 問題のSELECTを実行する 2.6. 異常かどうか確認。 異常が再現したら成功。 異常が再現しなかったら失敗。1.に戻り別の問題のあるSELECTを探す。 3. 異常が再現するSELECTが他のSELECTとどう違うのかを分析す る。例えば、ほぼ全件ヒットするクエリーではないか、ヒッ トしたレコードを一回のSQLですべて読み込んでいるのではな いか、など一度に扱うデータ量が大きくなっていないかとい う観点で分析する。 4. 大きなデータを扱う処理を分割して処理できないか検討する。 例えば、LIMIT OFFSETで少しずつデータを取得して小分けに 処理できないかを検討する。 -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) groongaサポート: http://groonga.org/ja/support/ パッチ採用はじめました: http://www.clear-code.com/recruitment/ コミットへのコメントサービスはじめました: http://www.clear-code.com/services/commit-comment.html