openstack G版装好后一段时间后,登陆horizon就变的很慢。今天感觉慢的让我受不了,点一个按钮就等5-6s,16G内存、4核CPU配置不至于这样,决定查下问题。
首先看了下apache日志没什么报错,感觉像是认证的问题。执行了keystone user-list 好几秒才返回结果,问题基本定位是keystone问题。然后top看了下mysql数据库 cpu利用率一直100%,马上进入数据库show processlist看了下 发现下面语句执行很长时间执行不完:
肯定是token表太大或者没有索引造成,用explain看了下这条sql 一百多万行全文扫描,看了下表内容都是临时认证的token信息,没什么大用直接清空了,然后执行keystone命令很快,清空浏览器缓存后登陆飞快。
上面只是暂时处理方法,线上用我觉得最好加索引,定期备份以前的数据到另外一个表。
由于处理后突然想写写博客也没截图。
注意:如果线上用的不要直接清空token,这样不清浏览器缓存有可能会导致登陆不了。
补充:看了下原来nova和quantum的大多数功能都需要验证token,当token数量太多时,导致在数据库查询token时要花费很多时间,而且有些功能牵涉到多个组件,就要多次查询token