OpenStack Keystone 経由でアクセス トークンを要求するのが非常に遅い

OpenStack Keystone 経由でアクセス トークンを要求するのが非常に遅い

OpenStack Keystone を介してアクセス トークンを要求するのが比較的遅い理由 (最短で約 400 ミリ秒、場合によっては 1 秒以上) を解明しようとしています。

原因を突き止めるために OSProfiler を使用しましたが、ほとんどの時間はデータベースとの通信に費やされているようです。トークンを要求するときに Keystone が約 100 回のデータベース呼び出しを行っていることがわかります。データベースへの個々の呼び出しは比較的高速 (2 ~ 6 ミリ秒) ですが、これを 100 回実行すると、データベース要求だけで 500 ミリ秒の遅延が簡単に発生します。

現在、データベースはネットワーク経由でアクセスされています (ネットワークの往復時間は約 0.3 ミリ秒です)。各データベース クエリの時間は、TCP と MySQL のオーバーヘッドを考慮すると妥当なので、それほどおかしくはありません。

私が疑問に思っている主な点は、これが想定される動作であるかどうか、つまり、Keystone がトークンを要求するためにこれほど多くのクエリを実行するのは正常であるかどうかです。キャッシュは有効になっており、Keystone がデータベースを使用しているのを確認でき、キャッシュ ライブラリをデバッグすると、実際にキャッシュにアクセスするとヒットすることを示すため、キャッシュが機能していることはわかっています。

現時点で考えられる唯一の選択肢は、ネットワークを完全に排除し、データベースを Keystone API と同じマシンに移動することです。

更新: これは、Fernetトークンを使用したUssuriです

関連情報