描述

最新我们一个稳定运行快一年的项目突然出现CPU方面的性能问题,该项目使用的azure sql database  P2 500DTU,运维同事监控到CPU使用非常高,客户反馈系统运行也比较卡。看到CPU高我们的第一感觉一般就是数据库缺少索引、执行计划重编译过度。该项目稳定运行快一年了,按道理不会突然出现这种现象,可能与客户有业务变动有关,具体要与项目经理沟通了解才清楚。
 

数据库环境

Microsoft SQL Azure (RTM) - 12.0.2000.8 
Mar 30 2017 01:30:03 
Copyright (C) 2016 Microsoft Corporation. All rights reserved.
 

处理过程

接到故障报警之后,我们马上查看了当前的sys.dm_db_resource_stats 查看到当前的CPU占比情况,发现当前的CPU占比并不高而且数据库链接也比较少,当前情况是很正常的,估计是我们错过事故现场。azure sql database 的性能调优跟我们平常使用的sql server 可能会有些不同,相对来说会有比较多的限制,我们通常情况是使用DMVs来处理比较多一些。像这种CPU情况我们先查看top 20 的sys.dm_exec_query_stats 的 total_worker_time 相同sql_handle 的情况,大概也能定位到问题点。这次CPU性能问题,我们更想体验一下query store 优势,看能否快速解决我们当前的情况,前提是我们已提前配置好了query_store,使用SSMSv17链接azure sql database 查看该库的属性。
如图

首先我们先查看前几个资源使用查询

我们一目了然就知道哪些语句是有问题,我们可以选择个人认为性能比较好的执行计划强制使用,这个选择可以快速让DBA做出决策;

我们当时遇到的问题是客户最近新增了一个数据对接接口,我们直接点中性能比较差的执行计划就可以看到具体的执行代码,恰好需更新的表上缺少索引造成本次事故,,新增缺少索引对比效果如下:
修改前的CPU情况

新增缺少索引后CPU情况

查看资源情况如下:

再通过我们的实施工程师的验证以及客户的反馈,本次故障已解决。

当然上述操作不想通过UI界面操作也可以直接查看query store对应的DMVs ,如sys.query_store_querysys.query_store_query_text 等

总结

1.提前管控好客户业务功能变动带来的影响;
2.提前部署好相关监控能为后续的快速问题处理提供指引;
 

参考

azure sql database CPU troubleshooting的更多相关文章

  1. Azure SQL Database (26) 使用Query Store对Azure SQL Database监控

    <Windows Azure Platform 系列文章目录> 我们在使用Azure SQL Database的时候,需要对数据库的性能进行监控,这时候就可以有两种方法: 1.第一种方法, ...

  2. [Windows Azure] Windows Azure SQL Database library

    Microsoft Windows Azure SQL Database extends SQL Server capabilities to the cloud. SQL Database offe ...

  3. 通过本地Agent监控Azure sql database

    背景: 虽然Azure sql database有DMVs可以查看DTU等使用情况,但记录有时间限制,不会一直保留.为了更好监控Azure_sql_database上各个库的DTU使用情况.数据库磁盘 ...

  4. Azure SQL Database (19) Stretch Database 概览

    <Windows Azure Platform 系列文章目录>  Azure SQL Database (19) Stretch Database 概览      Azure SQL Da ...

  5. Azure SQL Database (20) 使用SQL Server 2016 Upgrade Advisor

    <Windows Azure Platform 系列文章目录>  Azure SQL Database (19) Stretch Database 概览      Azure SQL Da ...

  6. Azure SQL Database (21) 将整张表都迁移到Azure Stretch Database里

    <Windows Azure Platform 系列文章目录>  Azure SQL Database (19) Stretch Database 概览      Azure SQL Da ...

  7. Azure SQL Database (22) 迁移部分数据到Azure Stretch Database

    <Windows Azure Platform 系列文章目录>  Azure SQL Database (19) Stretch Database 概览      Azure SQL Da ...

  8. Azure SQL Database Active Geo-Replication简介

    笔者在<迁移SQL Server 数据库到 Azure SQL 实战>一文中,介绍了如何把一个本地版的 SQL Server 数据库迁移到 Azure SQL Database.迁移虽然顺 ...

  9. How to Use Lucene.NET with Windows Azure SQL Database

    http://social.technet.microsoft.com/wiki/contents/articles/2367.how-to-use-lucene-net-with-windows-a ...

随机推荐

  1. python模块、面向对象编程

    目录: 模块补充 xml 面向对象 一.模块补充 shutil: 文件复制模块:进行文件copy.压缩: 使用方法: 将文件内容拷贝到另一个文件中,可以部分内容 shutil.copyfileobj( ...

  2. Python twisted事件驱动网络框架 源码剖析

    一.Twisted简介 Twisted是一个事件驱动的网络框架,其中包含了诸多功能,例如:网络协议.线程.数据库管理.网络操作.电子邮件等. 事件驱动简而言之,事件驱动分为二个部分:第一,注册事件:第 ...

  3. elk快速入门-Logstash

    Logstash1.功能:数据输入,数据筛选,数据输出2.特性:数据来源中立性,支持众多数据源:如文件log file,指标,网站服务日志,关系型数据库,redis,mq等产生的数据3.beats:分 ...

  4. Mac下 CMD常用命令

    1.常用命令 pwd     当前工作目录 cd(不加参数) 进root cd(folder)      进入文件夹 cd ..     上级目录 cd ~     返回root cd -     返 ...

  5. 使用python获得屏幕截图并保存为位图文件

    直接上代码: import win32gui import win32ui from ctypes import windll import Image hwnd = win32gui.FindWin ...

  6. Java程序中使用 Jsoup 爬虫( 简单示例 )

    一.maven项目里pom添加jsoup依赖 <dependency> <groupId>org.jsoup</groupId> <artifactId> ...

  7. php类知识点滴---类的实例化,构造函数,继承初步

    实例化类----黑科技用法,通过字符串来实例化 class coach { public function __construct() { echo "欢迎光临北武堂"." ...

  8. 题解 【USACO 4.2.1】草地排水

    [USACO 4.2.1]草地排水 Description 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫 ...

  9. 34.第一次只出现一次的字符(python)

    题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).   两次遍历,第一次存放字 ...

  10. php大文件传输断点续传源码

    1.使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现(http://pecl.php.net/package/apc) APC实现方法: 安装APC,参照官方文档安装,可以使 ...