nova-conductor单个进程占用CPU 100%
nova-conductor进程在运行时,其中单个进程会周期性的占用CPU 100%的使用率,周期大约2分钟。经调试和排查,发现原因在于nova-conductor在执行某一数据库操作时,请求数据量巨大, 仅数据库查找耗时10s,返回数据大小在2MB。导致数据在进行序列化和解序列化时耗尽CPU,并持续时间较长。详情如下:
操作请求:object_class_action
请求参数:{u‘objver‘: u‘1.6‘, u‘objmethod‘: u‘get_by_filters‘, u‘args‘: [{u‘deleted‘: True, u‘soft_deleted‘: False, u‘host‘: u‘node-144}], u‘objname‘: u‘InstanceList‘, u‘kwargs‘: {u‘use_slave‘: True}
功能:根据host信息查询该计算节点上所有已删除实例的信息,注意这里获取instance数据库信息的filter的deleted=True。这里是获取node-144计算节点上所有已删除实例的数据库信息,执行时间140.429696083s,此间CPU利用率基本处于100%。随着openstack系统的持续运行,数据库中的删除虚拟机信息将会越来越多,该数据查找操作也会继续变大,CPU耗时也将越长。node-144上进行创建删除的虚拟机较多,所以查询的时间最长,占用CPU 100%的时间也最长,对于其它计算节点上的InstanceList查询会持续在10s左右。
请求者: nova-compute
执行该请求的函数(不完全统计):
- _run_pending_deletes (定时任务,默认3m执行一次)
- _cleanup_running_deleted_instances(定时任务,默认30m执行一次)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。