2018年8月30日木曜日

joinコマンドの上限値変更

ことのはじまり

とあるややこしい要件から、巨大なinputlookupに巨大な集計結果をjoinするSPLを書いていましたが、ふと気づくとジョブのところに!マークがついてしまい、中身を見ると以下のようになっていました。
これは、joinコマンドが扱えるsubserchの結果がデフォルトでは50000件で制限されているためにおきます。この場合、SPLを工夫するという高度な回避方法も考えられますが、素直に上限値を上げてしまった方が手っ取り早いときもあります。


limits.confをいじる

$SPLUNK_HOME/etc/system/local/limits.conf を編集します。変更すべき箇所は2箇所です。
[join]
subsearch_maxout = 500000 
[searchresults]
maxresultrows = 500000
joinスタンザの方を変更すれば良いというのは直感的に分かりますが、searchresultsスタンザの方も変更しないといけないというのは落とし穴です。ドキュメントにちゃんと記載してほしいものです。

Answersでは以下のURLで回答されているものがあります。

ちなみに、joinスタンザには
subsearch_maxtime 
subsearch_timeout
といった設定もあるので合わせて拡張しておいた方が良いと思います。


limits.confを変更したときはSplunkの再起動が必要なので本番運用環境では躊躇します。とはいえ割り切って再起動するしかありません。ただせっかくの再起動にもかかわらずjoinの設定だけ変更してしまい、事象が改善されず、現場であわくってしまう、なんてことのないように一発で設定変更は終わらせたいものですね。

0 件のコメント:

コメントを投稿