OpenStack运行变慢处理

问题


OpenStack运行一段时间后变慢了。登陆horizon变的很慢,与现有硬件环境差距太大,效果甚不理想。

首先,,查看了下apache2日志没什么报错,感觉是认证的问题。执行了keystone user-list 好几秒才返回结果,问题基本定位是keystone问题。

然后,查看mysql数据库,其cpu利用率一直非常高,进入数据库show processlist看了下发现下面语句执行很长时间执行不完:

> use keystone;
> select id,expires,extra,valid from token;

肯定是token表太大或者没有索引造成,用explain看了下这条sql 一百多万行全文扫描,看了下表内容都是临时认证的token信息,没什么大用直接清空了,然后执行keystone命令很快,清空浏览器缓存后登陆飞快。

关于show processlist具体信息,请参考这里:
http://www.cnblogs.com/JulyZhang/archive/2011/01/28/1947165.html

上面只是暂时处理方法,线上用我觉得最好加索引,定期备份以前的数据到另外一个表。


方法建议

1、采用清除token表的方式解决问题
2、Memcached存放Token(貌似我觉得Redis更好)
详情,请参考该文:http://prajnagarden.com/openstack/2013/12/17/keystone-on-the-way/

openstack命令以及dashboard操作非常慢的原因

1、可能服务器负载太高。

2、可能是keystone数据库里的token表太久未清理,表太大。删除较早的token:

delete from token where not DATE_SUB(CURDATE(),INTERVAL 2 DAY)<=expires;(2天前的token)

有时确实token表太大执行这个语句会超时,可以直接删除token表的全部内容:

truncate table token

小结


注意:如果线上用的不要直接清空token,这样不清浏览器缓存有可能会导致登陆不了。
补充:看了下原来nova和quantum的大多数功能都需要验证token,当token数量太多时,导致在数据库查询token时要花费很多时间,而且有些功能牵涉到多个组件,就要多次查询token。

你可能感兴趣的:(openstack)