程序员人生 网站导航

nova-conductor单个进程占用CPU 100%

栏目:服务器时间:2015-01-26 08:53:43

     nova-conductor进程在运行时,其中单个进程会周期性的占用CPU 100%的使用率,周期大约2分钟。经调试和排查,发现缘由在于nova-conductor在履行某1数据库操作时,要求数据量巨大, 仅数据库查找耗时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⑴44}], u'objname': u'InstanceList', u'kwargs': {u'use_slave': True}

     功能:根据host信息查询该计算节点上所有已删除实例的信息,注意这里获得instance数据库信息的filter的deleted=True。这里是获得node⑴44计算节点上所有已删除实例的数据库信息,履行时间140.429696083s,其间CPU利用率基本处于100%。随着openstack系统的延续运行,数据库中的删除虚拟机信息将会愈来愈多,该数据查找操作也会继续变大,CPU耗时也将越长。node⑴44上进行创建删除的虚拟机较多,所以查询的时间最长,占用CPU 100%的时间也最长,对其它计算节点上的InstanceList查询会延续在10s左右。


要求者: nova-compute

     履行该要求的函数(不完全统计):

  •   _run_pending_deletes (定时任务,默许3m履行1次)
  • _cleanup_running_deleted_instances(定时任务,默许30m履行1次)

建议:
         定期清算数据库

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐