OpenStack Keystone을 통해 액세스 토큰 요청이 매우 느림

OpenStack Keystone을 통해 액세스 토큰 요청이 매우 느림

저는 OpenStack Keystone을 통해 액세스 토큰을 요청하는 것이 상대적으로 느린 이유를 알아내려고 노력해 왔습니다(최저 속도는 약 400ms에서 어떤 경우에는 1초 이상임).

원인을 파악하기 위해 OSProfiler를 사용했는데 대부분의 시간이 데이터베이스와 통신하는 데 소비되는 것 같습니다. 토큰을 요청할 때 Keystone이 약 100번의 데이터베이스 호출을 수행하는 것을 볼 수 있습니다. 데이터베이스에 대한 개별 호출은 상대적으로 빠르지만(2-6ms 사이) 이를 100회 수행하면 데이터베이스 요청에서만 쉽게 500ms의 대기 시간이 발생할 수 있습니다.

현재 데이터베이스는 네트워크를 통해 액세스됩니다(네트워크 왕복 시간은 약 0.3ms입니다). 각 데이터베이스 쿼리에 소요되는 시간은 TCP 및 MySQL 오버헤드를 볼 때 의미가 있으므로 그렇게 이상하지는 않습니다.

제가 궁금한 가장 중요한 점은 이것이 예상되는 동작인지, Keystone이 토큰을 요청하기 위해 이렇게 많은 쿼리를 수행하는 것이 정상적인지 여부입니다. 캐싱이 활성화되어 있고 Keystone이 데이터베이스를 사용하는 것을 볼 수 있으므로 캐싱이 작동하고 있다는 것을 압니다. 그리고 캐싱 라이브러리를 디버깅할 때 실제로 캐시에 접근할 때 히트가 발생했음을 나타냅니다.

지금 내가 볼 수 있는 유일한 옵션은 네트워크를 완전히 제거하고 데이터베이스를 Keystone API와 동일한 시스템으로 이동하는 것입니다.

업데이트: 이것은 Fernet 토큰을 사용하는 Ussuri에 관한 것입니다.

관련 정보