写给运维兄弟

写在前面的故事

  首先,给看官们讲个故事:最近遇到过一个客户,系统上线三年变的越来越慢,直到前几个月全面爆发,系统前端使用人员不断抱怨,甚至已经达到了不能使用的程度。这个时候他们的IT主管也是决策者无法忍受这种情况,就召集下面的运维开会,询问情况。

  领导:现在系统这么慢,前端都无法使用了,到底什么情况?

  运维人员A:我们的服务器CPU压力太大,一直处于90%以上!

  运维人员B:我们的服务器内存不足总是90%以上!

  运维人员C:我们的磁盘速度跟不上了,换SSD会有很大提高!

  领导:啥都不行了?那我们换高配服务器!

  。。。。。。。。。。。。。。

  换了服务器,好了半个月又开始慢...和之前一样基本没有任何缓解...领导又召集运维人员开会。

  领导:服务器都换了,配置增加了一倍还多,为什么还慢?

  运维人员:我们需要做读写分离,做集群分担压力!

  运维人员:软件不行了,这个软件太差!

  领导:。。。。

  如果你是领导,那么你该如果决策呢? 如果你是运维人员,你会有上面的回答么?

  可能你看完会笑,认为这是不可能发生的故事,然而这个故事确实是真实的!反之如果这个故事中看到了自己,那么请仔细地往下看喽!

--------------博客地址---------------------------------------------------------------------------------------

Expert 诊断优化系列 http://www.cnblogs.com/double-K/

 

废话不多说,直接开整-----------------------------------------------------------------------------------------

数据库在系统中的角色

  这个可能不用多说,大家都知道,一般系统慢都是慢在后端,而后端主要慢在与数据库的交互!

  数据库可以理解成独立于你的系统,成为一个单独的系统。无论从数据库的物理设计,与前端的交互方式,自身的参数设置,索引的设计,维护方案等都影响着你整个系统中最慢的环节(可以说整个系统中数据库就是最慢的环节)!

  同样通过数据库的状态,也能很大程度上判定出你系统的问题到底在哪。尤其能界定清的一点就是软件真的慢么?软件设计的不好?还是数据库年久失修?

几个问题

你了解你的数据库么

  了解决定效率

  也许很多老司机有这样的感觉,我运维的效率如何,这取决于我对系统的了解!出现什么样的情况,我就知道是哪里的问题,代码在哪里,问题在哪里!看错误号、看异常便知问题,也就是未出茅庐,已知三分天下!反过来新手可能需要debug跟一遍还一知半解。对于数据库道理也是一样的,数据库系统出现什么问题你是否能很准确的定位的可能发生问题的几个点?或者我需要查看系统哪些指标?系统中存在着哪些隐患?哪些功能慢?哪些语句需要优化?哪些运维策略做的不合理?

出现问题能从容面对么

  从容出自积累

  从容面对这个词说起来容易,但是我自身从小白的开发到现在的DBA一路走来真的是积累了很多,坑也踩了很多才能做到从容面对。

  这里举几个现象 :

  当你的CPU从稳定的30% 飙升到90%以上,你能想到的可能原因是什么? 怎么样快速排查?

  当你平稳的业务出现大面积超时,你能想到的可能原因是什么? 怎么样快速排查?

真的了解么

  习惯至深入

  在很多次和运维人员交流的过程中发现,我知道的名词和他知道的名词完全不是一个东西!比如:死锁。同样提到索引,他会说不用讲,这我都懂。那么什么是联合索引,什么是覆盖索引?覆盖索引怎么能降低你的死锁概率? 这时他的反应才是:哦...原来还可以这样,原来还有这么多东西!

  模拟一个场景,领导开会的时候问你如下问题:

  领导问:

  • 数据库有多大 ? 每天增长多少 ?
  • 高峰时间卡慢么 ? 为什么慢 ? 数据库问题还是软件或硬件?
  • 系统中那些语句慢 ? 慢到什么程度?
  • 系统中哪些资源是瓶颈 ?
  • 存在死锁情况么? 怎么产生的?
  • 有什么潜在风险 ?
  • 怎么解决 ?

  很多人运维人员的回答可能是:

  。。。。。。。。。。

  而问题发生的时候可能发生的情况就是这样的:  

  

  

你是哪一类?

  

  背景:今天,数据库普遍存在问题,如:性能问题、安全问题、可靠性问题、数据备份问题、结构设计问题等。

  

  

  结论:

  1. 当出了问题时,用户不知道是谁的原因,系统的真实状况如何?
  2. 问题一大堆,多数人没意识到是数据库问题,很多人想弄但不会弄,还有一部分人会弄但传统的方法不方便。

你是下面那个角色?

  

  

  

  你是否像救火队员?牺牲着自己的休息时间随叫随到的运维这你的系统?你是否像拆弹兵一样维护着一个随时爆炸的系统?你是否又像一个保姆,寸步不离的呵护着你的系统?

怎么办?

  可能不少看官就是上面的一员,但是又很迷惑,我该怎么办?我要从头深入学习数据库?学个几年到精通? 当然不需要,其实数据库运维很简单!你只需要了解常规的运维套路,常规的系统指标,和常规的问题排查方式,这样已经可以解决80%的问题。如果出现搞不定的20%你需要的数据库专业人员的协作

  运维三步走:

  •   发现问题
  •   解决问题
  •   预防问题

  是不是感觉说的很轻巧...本文除了让运维人员了解数据库在系统中的重要,多关注数据库,多了解一些数据库的运维方式外,也推荐一款工具,所谓工欲善其事,必先利其器!

推荐一款工具

  

  Expert for SQLServer 一款SQLSERVER的体检诊断专家。

  

发现问题

  全面体检(不仅仅是性能),让你知道数据库的真实运行状况、存在的问题及潜在风险

  按照6大维度, 108项指标(软硬件环境、参数配置、结构设计、性能、可用性、备份、安全)建立体检标准,定期对数据库进行全面体检,客观呈现数据库的真实运行状况,所有问题一览无余。

  

解决问题

  快速诊断,分析出系统的主要问题并进行分类,同时提供解决之道

  通过数据分析,将数据库的问题按照严重程度进行分类,按照提示的方式进行调整,所有问题。不管你懂数据库还是不懂数据库,你都可以清晰地知道,应该从哪入手,进而快速地解决问题,让天下没有难用的数据库。

  

  

  

预防问题

  定期体检,才能消灭隐患,买辆车还定期保养呢,这就是所谓的防患于未然,把问题消灭在萌芽中。

  个人建议,不管你用什么工具,或使用脚本。

  核心系统体检:1月/次 

  重要系统:2月或3月/次

  有功能上线,或结构变更等都需要做一次体检。

  

多人或大牛协作

  就像一个系统运转有硬件,网络,程序,数据库,需要多方、多人协作一样,数据库的问题一样,每个人都有擅长的部分,那么多人协作就是可以更全面的解决系统问题,这款工具的最大优势在于提供了多人协作的基础数据。这份体检数据包含了数据库运行中的大部分指标,所有时间点的状况,计数器的指标,语句间的阻塞等等信息,这远胜于传统运维中拼凑堆砌出来的脚本数据。

  这就像医院的电子病历,对全身有了全面的检查,X光片子、各种检验、化验数据在手,可能你去到哪个医院,找哪个专家或医生汇诊都可以作为他们协作的依据!

  

  

--------------博客地址---------------------------------------------------------------------------------------

Expert 诊断优化系列 http://www.cnblogs.com/double-K/

 

-----------------------------------------------------------------------------------------------------

  总结 : 亲身处理了上百家客户的系统,大部分系统数据库都存在着各种数据库问题,而数据库问题往往被忽视,直接被归结为软件的问题,厂商的问题!

  数据库应该被我们重视起来,很多时候只是在数据库上做一些常规的配置或简单的优化,就能让系统有几倍甚至几十倍的提升,而这些优化可能只是简简单单的数据库层面完全不用改代码的行为!

  系统运维需要定期体检,这点真心希望运维人员能够重视起来,也真心希望系统运维人员可以加深一下对数据库的了解,多掌握一些常规的手段和必要的运维策略。

  工欲善其事,必先利其器,运维同样需要一些简单方便的工具!

   本文提到的工具下载链接:

   Expert for SQLServer 工具下载链接:  http://zhuancloud.com/ReceptionViews/Install.html

  本人使用工具优化的相关文章链接 : 

  

SQL SERVER全面优化-------Expert for SQL Server 诊断系列

----------------------------------------------------------------------------------------------------

注:此文章为原创,欢迎转载,请在文章页面明显位置给出此文链接!
若您觉得这篇文章还不错请点击下右下角的推荐,非常感谢!

  引用高大侠的一句话 :“拒绝SQL Server背锅,从我做起!”

时间: 2024-10-10 16:39:52

写给运维兄弟的相关文章

从无到有写一个运维APP(三)完结篇

前言:自己的挖的坑还得填,此篇为完结篇,环境的搭建参考第一篇从无到有写一个运维APP(一),至于第二篇就跳过吧,写个APP没那么复杂.由于自己现在无业游民,所以没有什么现成的环境,环境就随便找个公网的..再者当下的完成度应该算不上一个完整的APP,但是作为参考,依瓢画葫芦绝对足够了,如果等完整产品,可能得等一段时间了,下面的是该项目的地址. 项目地址: https://github.com/youerning/MyApp(star一下呗) 效果图如下 文章目录: 准备工作 代理 页面框架 获取数

基于zabbix用Python写一个运维流量气象图

前言:同事问我,你写运维平台最先写哪一部分?好吧,还真把我问倒了,因为这是在问最应该放在放在第一位的东西~作为一个工作不足两年,运维不足一年的新手来说,还真不敢妄下评论,其实按照我的思路,觉得最重要的部分肯定是故障处理,报警,但是这一块怎么写?怎么说?肯定不能重复造轮子了,不过我最想写的是报表系统,思路是有的,但是一直耽搁了,详情参考http://youerning.blog.51cto.com/10513771/1708925. 好吧,在回到那个问题,应该先写哪个部分.我没回答,反问他了. 他

从无到有写一个运维APP(一)

前言(废话):由于本人没有系统的学过JS或者安卓开发,甚至不是计算机专业出身(所以移动开发轻喷),做这个APP也是临时起意,花了一两天发现做一个基于HTML5的APP倒不是很难,所以也就有了这篇文章,再花了两天研究了一下ionic这个框架以及AngularJS,就发现肯定不会很难,所以打算写八到十篇的系列文章,这一系列的文章会从最初的环境搭建,从设计,排版,细化,再到最后的数据可视化,都会在这一系列文章写到,并且大概讲讲我对ionic以及AngularJS肤浅的认识(我会我告诉你我JavaScr

也来写个运维鼓励师!

背景: 最近学了对接钉钉机器人.昨晚心血来潮,把我上个月做的网络设备配置自动备份系统升级了下,在备份完成后,通过钉钉机器人在运维群里发送通知消息. 今早,又心血来潮,想做一个运维鼓励师!程序员有鼓励师,我们运维当然也不能少!虽然没有妹纸,但机器人可以写一个! 需求: ①友好性:每天早上上班时,对群组内的所有成员随机夸赞一遍. ②技术性:从51cto首页或其他来源爬虫推荐的技术文章. ③娱乐性:最后随机抽取每日的群员,授予王者称号. 效果: 代码部分: 这里我就不放正式的代码了. 代码部分可以参考

从无到有写一个运维APP(二)

前言:理论上应该是一周一篇的说,但上一周回湖南浪去了,so~~~~,再者这并不是公司项目,全是自己临时起意,所以业余时间写写~~~更新也许不会太快. 下面是个人的一些思路以及大概每篇文章的内容,也许并不规范,为了不让这篇文章看起来太干,所以第三部分放一些所谓的干货,通过Python交互elasticsearch,zabbix获取需要的数据并可视化,这也主要是为了后面做准备. 本文内容: 一: 系列文章目录 二: 所谓流程 三: 通过Python查询elasticsearch,zabbix数据(怎

linux运维升级路线

运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感知前方潮流变化.如:今年大数据,人工智能比较火--(相对表示就是 Python 比较火) 之前写过运维基础篇,发现对很多人收益挺大,接下来也写下关于这4年多的运维实践经验,从事了2年多游戏运维,1年多安全运维,1年大数据运维,相关行业信息不能算非常精通,但是熟悉和熟练还是相对可以的. 初级篇 linux运维人员常用工具拓扑详见: 1.rsync工具 很多地方经常会用到rsync工具,实施几台服务器的

哪种监控工具才是运维人的最爱?

哪种监控工具才是运维人的最爱?   那些指标需要监控?我能监控到什么?能监控到何种程度?或许这些问题连你自己都难说清楚.先看看运维兄弟们的现状. 1.运维现状 传统企业的计算机运维是在用户使用计算机过程中发现故障之后,通知运维人员,再由运维人员采取相应的补救措施.运维人员日常大部分时间和精力都花在处理简单且重复的问题上,而且由于故障预警机制不完善,往往是故障发生后才会进行处理,这种情况使运维人员的工作经常处于被动"救火"状态,这种被动的运维模式让IT部门疲惫不堪.运维质量如何提高?生产

【有感而发】从中华武术谈运维工程师以及运维自动化

从中华武术谈运维工程师以及运维自动化 任何事物都没有完美一说,但是我们可以死磕自己,追求极致... 无论我们现在是搬砖呢,砌墙呢,还是在逗自己混日子,我们需要关注的是自己的方向在哪里,而不是过于在意自己当前的所站的位置,人生不能受限于自己的意识. 平时和小伙伴们聊人生谈理想的时候,我会经常和别人讲我所认为的专业化运维工程师和运维工作的方向,有认可的也有不认可的,认可的多在努力让自己的工作越来越轻松,自己的价值越来越能得到体现,不认可者多属于一天都很忙,而且认为运维就是帮开发人员打打杂,做大量重复

运维:windows+python+route的一次相遇

自言自语 作为一名网络运维工程师,自从接触了linux就被脚本语言所着迷.从Shell到java到expect再到python,慢慢的变得习惯用写运维工具的方式来解决日常运维问题. 本次写的运维工具让我get到了很多新技能,觉得很有必要把思绪.过程详细的记录下来,以便日后回顾复习.该工具其实就是一个在windows上用来检测路由的python程序.我是python小菜鸡,请各路大神多指教! 功能说明: 每天凌晨4点从远端服务器获取指定的调度域名列表,对调度域名逐个进行解析.对解析结果中的每个IP