0

システムで 24 回未満のチェックを実行しています。サーバーの負荷が常に高いわけではありません。通常の動作中、負荷平均は 1 をはるかに下回ります。

高負荷の有機的な原因がないシステムで、check-cpu チェックが高負荷平均をトリガーし始めるという問題が再発していることに気付きました。さらに調査したところ、高負荷レポートは、実際には他のチェックと並行して実行されている check-cpu スクリプトによるものであることがわかりました。チェックの実行以外では、CPU 負荷は問題ありませんでした。

sensu 0.20 から 0.23 にアップグレードしましたが、引き続き同じ問題が発生しました。

sensu-server および sensu-client サービスを再起動すると、一定期間 (約 24 時間) 問題が解決し、その後元に戻ることがわかりました。

この時点で理論化したのは、ホストでのチェックのディスパッチ/実行に何らかの時間遅延があり、最終的にこのオーバーラップが発生するということです。

すべてのチェックは、30 または 60 の間隔で実行するように設定されています。

check-cpu チェックの間隔を 83 に設定することにしましたが、それ以降、問題は発生していません。おそらく、check-cpu チェックが他のチェックと一致しないため、その短い瞬間に高い CPU 負荷が見られないためです。

これは、sensu に固有のスケジューリングの問題ですか? 適切な間隔でチェックをディスパッチする方法を知っているはずですか、それとも間隔パラメーターによって制御されるべきものですか?

ありがとう!

4

1 に答える 1

2

チェックの実行時間がずれていることに気付きました。つまり、正確に 30 秒ごとに実行されるのではなく、30.001 秒ごとなどに実行されます。チェックごとにドリフトが異なる可能性があると思います。したがって、最終的には、チェックが同期してすべてが同時に実行されるという問題に遭遇し、問題が発生します。定期的な間隔 (30 秒、60 秒など) でより多くのチェックを実行すると、この問題がより頻繁に発生します。この問題を変更したい場合は、sensu に直接報告する必要があります。彼らはおそらくシステムをスケーラブルにしたいので、最終的には修正するかもしれないと思います.

于 2016-05-06T22:24:08.317 に答える