私は WSO2 製品を試していますが、悪いコードがすべての CPU 時間を占有する可能性があるシナリオ (デッド ループなど) について考えています。A と B の 2 つのテナントを持つ WSO2 AS で試してみました。A の悪いコードは B に影響し、B のアプリは非常に長い応答遅延が発生したり、スタックしたりします。テナントの CPU 使用率を制限する方法はありますか? ありがとう!
2 に答える
現時点では、完全な分離が必要な場合は、各テナントが独自の JVM を取得する、いわゆるプライベート ジェット モードで環境をセットアップする必要があります。
共有環境では、重要なスレッドが指定された期間以上実行されないようにするスタック スレッド検出があります。テナントごとに CPU 使用率を制限する計画があります。これは、将来のリリースで利用可能になる予定です。
私の提案は、1 つのアプリケーション サーバーで 2 つのテナントを実行しないことです。同じマシンで 2 つの別々のプロセスを実行します。いっそのこと、別々の OS レベルのコンテナ ( jailやlxcコンテナなど) で 2 つの別々のプロセスを実行します。または、コンテナーを使用できない場合は、仮想マシンを分離します。
オペレーティング システムは、CPU 使用を制御するためのツールを提供します。プロセスには rlimit と nice、コンテナーと VM には実装固有の機能です。これらは OS (または仮想マシン マネージャー) に実装されているため、このジョブを正しく確実に実行できます。アプリケーションサーバーがこれを近くで実行できる方法はありません。
いずれにせよ、個別のアプリケーションがアプリケーション サーバーと JVM を共有するというのは、90 年代に破棄されるべきだったひどい考えです。その必要はまったくなく、非常に多くの潜在的な頭痛の種をもたらします.