ceilometer alarm 创建过程中的DB操作及优化

创建一个ceilometer alarm需要4次DB操作:

api/controllers/v2/alarms.py

1. is_over_quota 每一次都需要查询该user/project的所有alarms

2. 判断alarm name是否已经存在于DB中,也需要查询该user/project的所有alarms
        # make sure alarms are unique by name per project.
        alarms = list(conn.get_alarms(name=data.name,
                                      project=data.project_id))
3. 添加alarm行
        alarm = conn.create_alarm(alarm_in)

4.添加一个alarm历史记录
        self._record_creation(conn, change, alarm.alarm_id, now)

优化考虑:

1. is_over_quota,可以创建一个全局计算数据结构并为多API workers加锁,服务启动时从DB的获得初始化值。

2. 判断alarm name是否已经存在于DB中,把name作为该table的键值,就不需要先取得user/project的所有alarms。

时间: 2024-10-13 02:40:16

ceilometer alarm 创建过程中的DB操作及优化的相关文章

虚拟机创建过程中镜像格式的的变化过程

这里通过OpenStack的horizon组件来创建一个m1.small的virtual machine,来详细分析下镜像格式的变化以及glance底层具体执行的哪些操作. (1)首先看一下Glance管理的镜像,如果采用local storage,glance将镜像文件默认存储到/var/lib/glance/image目录下,这里我们选择c036d689-0336-4fcd-a8e0-4aed4dd5e420这个镜像来作为创建虚拟机的模板,此镜像是通过如下命令添加的,因此在horizon中显

【原创】Python 对象创建过程中元类, __new__, __call__, __init__ 的处理

原始type: type是最原始的元类,其__call__方法是在你使用" t_class = type(classname_string, base_classes_tuple, attributes_dict)" 这种语法来使用时, 在__call__方法内使用又会调用type的__new__和__init__方法来创建classname_string的具体类,并初始化类信息.当type(***)调用完成, classname_string代表的类可以用来创建实例了. 元类调用过程

VMware vSphere Cluster 集群创建过程中遇到的问题

工作环境:VMware vSphere 5.5,vCenter Server 5.5, ESXI 5.5,Dell EQLOGIC存储 此主机当前没有管理网络冗余 在正常环境下,需要双网卡,在配置-网络-vSwitch0属性-网络适配器-添加冗余网卡即可. 添加两块物理网卡后,在主机上单击右键>选择重新配置HA,即可解除报警状态. VMware vSphere 5.5配置完成Cluster的HA后在主机的摘要栏提示"此主机当前没有管理网络冗余",测试环境中服务器如果是单网卡,也没

ASP.NET Web API 控制器创建过程(二)

ASP.NET Web API 控制器创建过程(二) 前言 本来这篇随笔应该是在上周就该写出来公布的,因为身体跟不上节奏感冒发烧有心无力,这样的天气感冒发烧生不如死,也真正的体会到了什么叫病来如山倒,病去如抽丝.这两天状态才好了一点,让我理解了什么才是革命的本钱,希望大家也多保重身体. 好了,还是回归主题,对于上一篇的内容解说的仅仅是ASP.NET Web API控制器创建过程中的一个局部知识,在接着上篇内容解说的之前,我会先回想一下上篇的内容,而且在本篇里进行整合,让我们要看到的是一个整个的创

ASP.NETWeb API 控制器创建过程(二)

ASP.NET Web API 控制器创建过程(二) 前言 本来这篇随笔应该是在上周就该写出来发布的,由于身体跟不上节奏感冒发烧有心无力,这种天气感冒发烧生不如死,也真正的体会到了什么叫病来如山倒,病去如抽丝.这两天状态才好了一点,让我理解了什么才是革命的本钱,希望大家也多保重身体. 好了,还是回归主题,对于上一篇的内容讲解的只是ASP.NET Web API控制器创建过程中的一个局部知识,在接着上篇内容讲解的之前,我会先回顾一下上篇的内容,并且在本篇里进行整合,让我们要看到的是一个整个的创建过

ASP.NET Web API 控制器创建过程(一)

ASP.NET Web API 控制器创建过程(一) 前言 在前面对管道.路由有了基础的了解过后,本篇将带大家一起学习一下在ASP.NET Web API中控制器的创建过程,这过程分为几个部分下面的内容会为大家讲解第一个部分,也是ASP.NET Web API框架跟ASP.NET MVC框架实现上存在不同的一部分. ASP.NET Web API 控制器创建.激活过程 ASP.NET Web API 控制器创建过程(一) ASP.NET Web API 控制器创建过程(二) 未完待续 环境描述.

Unity 3D 中新建游戏物体过程中 Intantiate Transform 空物体和本体之间的关系

我们通过Unity构建场景的过程中,经常发现一个现象,就是物体在拖进场景中后,我们会发现物体是反的,通过改变物体的rotation属性后,得到了正确的方向,可物体的坐标系又变得和默认坐标系(右上角系统自带的坐标系)不一样了,这样就给后续的脚本工作(通常是控制(Transform)脚本和生成(Intantiate)脚本)带来了困扰,因为脚本写作的过程中是按照正常的坐标系来的,物体的脚本和默认的不一样了就会出现诸如按下键物体向上的现象. 其实,在游戏场景的创建过程中,不仅仅是物体的方向,一个游戏物体

Spring源码解析 – AnnotationConfigApplicationContext容器创建过程

Spring在BeanFactory基础上提供了一些列具体容器的实现,其中AnnotationConfigApplicationContext是一个用来管理注解bean的容器,从AnnotationConfigApplicationContext的实现结构图中可以看出: AnnotationConfigApplicationContext继承GenericApplicationContext这个通用应用上下文,GenericApplicationContext内部定义了一个DefaultList

Android中数据库Sqlite的性能优化

1.索引简单的说,索引就像书本的目录,目录可以快速找到所在页数,数据库中索引可以帮助快速找到数据,而不用全表扫描,合适的索引可以大大提高数据库查询的效率.(1). 优点大大加快了数据库检索的速度,包括对单表查询.连表查询.分组查询.排序查询.经常是一到两个数量级的性能提升,且随着数据数量级增长. (2). 缺点索引的创建和维护存在消耗,索引会占用物理空间,且随着数据量的增加而增加.在对数据库进行增删改时需要维护索引,所以会对增删改的性能存在影响. (3). 分类a. 直接创建索引和间接创建索引直