Naoya Murakami
visio****@gmail*****
2013年 11月 13日 (水) 12:20:22 JST
お世話になっております。村上です。 すいません。宛先を間違ってしまいましたので、MLに再送いたします。 また、追加の情報として以下を提供します。 ・現在起動中のfluent-plugin-droongaの出力(随時更新されます) http://test.createfield.com/back.log ・現在起動中のexpress-droongaの出力(随時更新されます) http://test.createfield.com/front.log ※09:46:40は、空クエリのエラー ・express-droongaで504エラーとなるクエリのGroongaコマンドによる出力結果 % groonga /var/lib/mysql/jppat_ft.mrn "select ftext --match_columns title||abstract||claims||freeword||description_19xx||description_200x||description_201x --query '画像のハーフトーン閾値生成装置及び方法' --output_columns app_id,title --offset 0 --limit 20" | jq . [ [ 0, 1384311647.11816, 134.869267463684 ], [ [ [ 1 ], [ [ "app_id", "ShortText" ], [ "title", "LongText" ] ], [ "JP19820151640", "画像のハーフトーン閾値生成装置及び方法" ] ] ] ] ※別のもう少しハードスペックの良いサーバの場合20sぐらいでした。 ----------------------------- お世話になっております。村上です。 Mroongaのストレージモードで作成したGroongaのデータベースを使って、 Droongaで検索システムを作ろうとしています。 fluent-plugin-droongaでGroongaのデータベースを起動し、 express-droonga経由で検索すると、しばしば504エラーになります。 504エラーは、ややながい文字列のクエリや非常に検索結果が多い場合に 発生することがおおいです。 なお、この場合、fluentdは沈黙しています。too many open file等のGroonga のエラーの場合は、fluentdがエラーを吐きます。 検索に時間がかかってタイムアウトになっているのかと、以下を参考にexpress-droonga に渡すメッセージにタイムアウト値を渡すもかわりませんでした。 https://github.com/droonga/express-droonga/wiki/Message-format%3A-search-feature ここで、さらに問題なのが、504エラーになるクエリを投げつけた後、 504エラーにならなかった軽いクエリもしばらく(結構ながい間)エラー になってしまいます。 Q1. 504エラーを回避するチューニング方法等はありますでしょうか? Q2. 504エラーが発生した後に、すぐに検索結果を得られるようにできないでしょうか? 特定のクエリではなく、ある程度、大きくて負荷が高い場合に発生する らしく、簡単に再現できる方法は特定できていません。 以下のURLにqueryとtimeoutだけ設定できる簡単なフォームをつくりました。 http://test.createfield.com:3000/ (データベースサイズ460GiB メモリ16GBのHDD2本 解約済みで期限切れ待ちのサーバ) 1.たとえば、検索クエリに「データベース」と入力し、タイムアウトに「3000」 を入力して検索をクリックすると、321256件が0.4秒ぐらいで返ってきます。 2.つぎに検索結果で得られた長めのタイトル「画像のハーフトーン閾値生成装置 及び方法」を検索クエリに適当に入力して、検索すると504エラーコードが返ってきます。 3.再度検索クエリを「データベース」にしても、504エラーコードが返ってきます。 その後、しばらくの間は、なにをやっても504エラーコードになります。 4.その後何分かまつと、再度検索クエリ「データベース」で検索結果が返ってくる ようになります。 事象の原因が特定できておらず、難しいと思うのですが、何か解決方法が あれば、よろしくお願いします。 以上、よろしくお願いします。