Pocket

急にRedashからSQLを叩くと….まったく反応しない事象が発生しました。(お初)

どうやらredashが内部で使用しているジョブキュー(celery)がCPU100%張り付いてキューが詰まって、
それ以降に投げたクエリが応答しなくらしく、OSS側のバグ???(不明)
とのことなので、今回対象方法をブログしやす。


■ReDash keeps queuing up queries #1605

https://github.com/getredash/redash/issues/1605

調べてみるとこんなIssueを発見。Redash開発者で有名なArik Fraimovichさんによると、

did you configure Celery with maxtasksperchild?

maxtasksperchild defines after how many tasks the Celery process will kill the worker and start a new one. This helps with returning memory to the system, as otherwise Python won’t return claimed memory. I think there is a way to set max used memory setting for Celery, but never tried it and not sure I trust it.

「maxtasksperchildでCeleryチューニングちゃんと設定してんの?maxtasksperchildは、Celeryプロセスが勝手に殺して新しい作業を開始するタスクの数を定義するんやで。そうしないと、Pythonは要求されたメモリを返さないで。 ちなみに試したことはないし、知らんで。」

と、試したことないんかーーーいとツッコミどころ満載ですが、

どうやらsupervisordの設定ファイルに以下がデフォルトで設定されているので、
–max-memory-per-childも合わせてチューニングすると良いみたい。


■早急な対応

・htop打ち込む

・redashプロセスを強制kill

これでもだめならもう一個もkillする。

・htopコマンドで確認

CPUが100%になっていなければOK。


■まとめ

とブログ書いていたら前任者のパイセンが直してくれたそうで!?
v4にバージョンアップすれば良さそう!?→あんま関係ない
一定間隔以上、プロセスが張り付いていたら強制killとか…
ここらへんMackerelで対応できそうな気がする。いやmonitか!
ちょいとチューニング試してみやす!!!

Pocket

カテゴリー: Redash

adachin

1989年生まれのSRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWS/Azureでのインフラ構築、Docker開発環境の提供、Kubernetes保守、インフラコード化、新技術の検証、リファクタリング、セキュリティ強化などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTAで未経験者にインフラのコーチング/コミュニティの運用を実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください