Am încercat să-mi dau seama de ce solicitarea unui token de acces prin OpenStack Keystone este relativ lentă (cel mai mic este de aproximativ 400 ms până, în unele cazuri, mai mult de o secundă).
Pentru a ajunge la cauza, am folosit OSProfiler și se pare că cea mai mare parte a timpului este petrecută discutând cu baza de date. Pot vedea Keystone efectuând aproximativ o sută de apeluri la baza de date atunci când solicită un token. Apelurile individuale către baza de date sunt relativ rapide (între 2-6 ms), dar dacă faci asta ori 100 poate duce cu ușurință la 500 ms de latență doar în cererile de bază de date.
În acest moment, baza de date este accesată prin intermediul rețelei (sunt aproximativ 0,3 ms în timpii dus-întors în rețea). Timpul pentru fiecare interogare a bazei de date are sens atunci când ne uităm la TCP și MySQL, așa că nu este atât de nebun.
Principalul lucru despre care mă întreb este dacă acesta este un comportament așteptat, este normal ca Keystone să facă atâtea interogări pentru a solicita un simbol. Memorarea în cache este activată și știu că funcționează, deoarece văd Keystone folosind baza de date și când depanează biblioteca de cache, indică de fapt că primește accesări atunci când ajunge la cache.
În acest moment, singura opțiune pe care o văd este să elimin complet rețeaua și să muți baza de date pe aceeași mașină ca și API-ul Keystone.
Actualizare: Acesta este pe Ussuri folosind jetoane Fernet