Das Anfordern eines Zugriffstokens über OpenStack Keystone ist sehr langsam

Das Anfordern eines Zugriffstokens über OpenStack Keystone ist sehr langsam

Ich habe versucht herauszufinden, warum das Anfordern eines Zugriffstokens über OpenStack Keystone relativ langsam ist (mindestens 400 ms, in einigen Fällen mehr als eine Sekunde).

Um der Ursache auf den Grund zu gehen, habe ich OSProfiler verwendet und es scheint, dass die meiste Zeit für die Kommunikation mit der Datenbank aufgewendet wird. Ich kann mir vorstellen, dass Keystone bei der Anforderung eines Tokens etwa hundert Datenbankaufrufe durchführt. Die einzelnen Aufrufe an die Datenbank sind relativ schnell (zwischen 2 und 6 ms), aber wenn man das mal 100 macht, kann das leicht zu einer Latenz von 500 ms nur bei den Datenbankanforderungen führen.

Derzeit wird über das Netzwerk auf die Datenbank zugegriffen (die Netzwerk-Roundtrip-Zeit beträgt etwa 0,3 ms). Die Zeit für jede Datenbankabfrage ergibt angesichts des TCP- und MySQL-Overheads Sinn, ist also nicht so verrückt.

Ich frage mich vor allem, ob dies das erwartete Verhalten ist. Ist es normal, dass Keystone so viele Abfragen durchführt, um ein Token anzufordern? Das Caching ist aktiviert und ich weiß, dass das Caching funktioniert, da ich sehe, dass Keystone die Datenbank verwendet und beim Debuggen der Caching-Bibliothek tatsächlich anzeigt, dass es beim Zugriff auf den Cache Treffer erhält.

Im Moment besteht die einzige Option, die ich sehe, darin, das Netzwerk vollständig zu trennen und die Datenbank auf dieselbe Maschine wie die Keystone-API zu verschieben.

Update: Dies ist auf Ussuri mit Fernet-Tokens

verwandte Informationen