keycloak~大數據量時坑(keng)出現~索引的(de)坑(keng)
我(wo)不(bu)知道(dao)為(wei)什么(me)kc沒有為(wei)對應的(de)查詢字段加索引(yin),導致(zhi)我(wo)們在使用kc時(shi),當用戶表數(shu)據量(liang)達到幾十萬時(shi),出(chu)現所有增(zeng)刪(shan)改接(jie)口緩(huan)慢的(de)問題,這個(ge)問題的(de)原因,我(wo)找了(le)好長時(shi)間,我(wo)在大數(shu)據量(liang)時(shi)找這個(ge)緩(huan)慢原因過(guo)程
- 查看mysql的并發數的限制
- 查看top產生的cpu,內在的使用情況
- 查看客戶端到kc端,kc端到數據庫的網絡傳輸限制
- 為k8s的資源進行調整,添加內存額度
- 為username字段添加索引
- 打開mysql日志功能,觀察慢接口的日志
- 找到慢的語句
select userentity0_.ID as ID1_75_, userentity0_.CREATED_TIMESTAMP as CREATED_2_75_, userentity0_.EMAIL as EMAIL3_75_, userentity0_.EMAIL_CONSTRAINT as EMAIL_CO4_75_, userentity0_.EMAIL_VERIFIED as EMAIL_VE5_75_, userentity0_.ENABLED as ENABLED6_75_, userentity0_.FEDERATION_LINK as FEDERATI7_75_, userentity0_.FIRST_NAME as FIRST_NA8_75_, userentity0_.LAST_NAME as LAST_NAM9_75_, userentity0_.NOT_BEFORE as NOT_BEF10_75_, userentity0_.REALM_ID as REALM_I11_75_, userentity0_.SERVICE_ACCOUNT_CLIENT_LINK as SERVICE12_75_, userentity0_.USERNAME as USERNAM13_75_ from USER_ENTITY userentity0_ where userentity0_.SERVICE_ACCOUNT_CLIENT_LINK='25e52f60-5991-43dd-9108-873f60af385d' and userentity0_.REALM_ID='xxx' - 為兩個查詢字段添加索引
SERVICE_ACCOUNT_CLIENT_LINK和SERVICE_ACCOUNT_CLIENT_LINK - 問題解決!
最后,把這個問題產生的過程,和解決方法拋出來,并且我會在github上為redhat提出這個bug。