首页 > 其他分享 >做一个不背锅的运维 经验总结

做一个不背锅的运维 经验总结

时间:2023-08-10 17:06:59浏览次数:42  
标签:负载 运维 tomcat 不背 数据库 查询 问题 日志 经验总结

系统出了故障,第一个挨板子的就是运维人员。不管任何原因,先找运维,给他一口好锅。运维好苦啊!稳定运行时,似乎是多余的存在;有问题时,要替人背锅。与其被动,不如主动一点,不做背锅侠!


做一个不背锅的运维 经验总结_tomcat


怎么做呢?先看几个例子,亲身经历。

砸锅例一


一支付系统,前端负载均衡,中间tomcat应用,后端memcached加oracle 11G rac两节点集群。遇上好的时机,公司的业务增长很快,但人手有限,跟不上业务的发展,只好尽可能的先上线,发现问题再修正。


某天,在西四环帮人排查宾馆wifi故障,楼里手机信号极差。还没查出什么原因,技术就打电话来质问:“你配的oracle最大连接数,真有3000个么?怎么到300就卡死了?”。赶紧跑到室外,坐在地上用手机打开wifi热点,用笔记本连数据库,load确实很高。还没查出什么原因,那边老板也来电话催促,说业务无法交易。我想,反正无法交易,不如把tomcat停一下,看数据库负载是不是会降下来。在征得同意以后,关掉killall -9 java 关闭tomcat,片刻orace负载下降明显;再启动时,负载狂飙,最高可到600多。


对oracle的一些配置进行了检查,性能未能得到任何改善。于是跟开发人员进行沟通,问他们近期是否做了项目更新?答复是肯定的,但无法确定是哪里的问题引起性能上的问题。我建议在应用服务器上安装某性能监控探针,获得许可,很快就部署完毕。等待10来分钟,数据就出来了。


做一个不背锅的运维 经验总结_tomcat_02


说明:本图不是事发时截取的,仅仅是为了方便读者了解。


一帮人紧急召集到一块,从性能探针的管理页面找出最耗资源的sql语句进行代码还原(程序员来查这个代码是什么功能)。一番动作之后,告知是后台管理操作--运营人员及代理商查询当日交易数据,由于产品设计上的缺陷,只要数十人同时进行此项操作,数据库就会直接挂起。


这个后台设计上的缺陷主要有一下几点:


1、管理后台登陆时,会查询所有代理商的数据,代理商会查询下级代理商的数据。而不管是哪一级的登陆,都会顺带查询其下最终用户的数据。如此叠加,产生巨大的数据查询量。

2、数据的统计,不是字段值做数学运算,而是以 select count() 的方式进行。这比单独做一个表,把字段值做数学运算要耗资源。

3、不管有无需要,都抓取最终用户的交易详情。总用户数有300多万,运营人员一打开统计,就会去查询这些记录;代理商也是这样,只不过记录数会少一些,但多人操作,就会重复查询,给数据库造成巨大的压力。


负责技术的老总坦承,其实大部分管理,最关心的是总额,很少去挨个查看详情。如果需要查看,再按一定条件去执行这个操作。


弄清了问题,程序员马上去落实,更新代码以后,问题得以彻底的解决。


砸锅例二


夏初的时候,上线了一个区块链媒体项目。预估到流量会比较可观,不仅采购的云主机配置高,而且还是多台,并且购买了负载均衡服务。


做一个不背锅的运维 经验总结_数据库_03


可万万没想到,项目一上线,还没做任何宣传,集群中所有服务器的负载都飚得老高,load接近1000,还好没死机,还能远程ssh登陆。


这步,一有问题,一口锅就飞来了,非说是系统配置上的问题。好吧,先把锅背上,忍辱负重检查各种配置。


1、查php配置php-fpm.conf,各种参数都改一下。

2、查数据库状态,mysql > show full processlist;好多连接呢,不懂业务,不知道这些sql是啥用途,不管了,先保留下来吧。

3、查web访问日志,滚得飞快,似乎有马达在拉着转。看来问题在这里了,心里想,这么频繁的请求,会不会是受到了×××?从日志与网络层面分析,又不像是这种情况。


问题得不到有效的缓解,只好跟相关人员进行沟通,要了app的下载地址,然后在手机上进行安装。安装好以后,打开app,底部三个菜单项“快讯、行情、我的”。“快讯”菜单有四个栏目。


做一个不背锅的运维 经验总结_数据库_04


我试着拿手指往上滑,信息一直能显示出来,而且看不到那种正在加载的转圈存在。结合web访问日志,我大致可以判断,应该是一次性把所有的信息都从数据库里进行抓取,不管这样是否合理(一般只看前1-2屏);另外,也可推断其它菜单或者栏目的内容,也很可能是一下子全抓取出来,管它需不要要展示。


有了这个发现,立即联系开发人员,询问是不是数据抓取一抓到底,而且是一秒钟抓好多次(好多个板块一起抓)?答复:“确实如此,因为急着上线,没做太多考虑”。这中间,我也曾对nginx的并发数做限制,每秒限制5次;负载是降低了不少,但app却基本不能访问。结合访问日志及这次限制,可以肯定同一个app同一秒钟要抓二十几次,逻辑上肯定不合理。


终于可以把这口锅扔给开发,让他们改进,问题得以最终解决。


砸锅例三


昨天夜里,天气凉爽,想着能睡个好觉。10点左右,有哥们呼叫,说某个项目又罢工了。这个项目是一个在线租赁服务,由nginx + tomcat 构成,运行了两个tomcat实例。一直以来,经常出现502故障,公司花了钱做推广,老出问题影响不好。登上系统,做了如下处理:


1、修改tomcat内存限定;

2、修改tomcat启动账号为www(以前是root启动);

3、设置crontab计划任务,让tomcat每天凌晨4点重启一次;

4、监控网站url。

做了这些处理以后,稳定了好一阵。听到项目又罢工,心里一惊。赶紧登上去,手工重启tomcat,进程是存在了,但系统日志catalina.out却抛出异常,用浏览器访问,仍然是502错误。


执行w指令,发现还有别的人登陆到系统,就在微信群问是不是有人干活。有人回答:“正在发新版”。你发版提前打个招呼啊!出问题了,不吱声,让我在那里白费劲。


怀疑新发的包有问题,重复传了几次,问题依然存在。于是开发扔一句话:“可能tomcat坏了”!这判断有点武断,tomcat没人乱动,一般不会坏的。


我耐着性子,进入到项目的目录 webapps,下边有三个目录,程序员说它上传的文件在ROOT下:


做一个不背锅的运维 经验总结_tomcat_05


既然如此,我试着把除ROOT外的两个目录移走,万一有问题,再恢复回来。重启tomcat,恢复正常,tomcat日志也不抛出异常。


我仔细检查目录ROOT及 yzuqin-m目录里边的配置,特别是应用连接数据库的字串。两个项目连接的数据库各不相同,询问程序员哪个是正确的。得到答案之后,再分析日志,可知每次启动,关联的项目却不是ROOT目录下的。

经验总结


干运维不仅要对系统、应用有较好的把控,而且还需要了解业务。曾经很长一段时间,自己也是不喜欢关注业务,连服务器上运行的是什么都不知道(最多知道是网站而已,具体是什么性质的,一概不关心)。如果花时间了解一下业务逻辑,再结合系统,几个方面进行排查,处理故障的效率要高很多,而且很多情况下,把那口不属于自己的锅给砸碎,变成咱们去帮助其它技术人员解决问题,且不快哉!

标签:负载,运维,tomcat,不背,数据库,查询,问题,日志,经验总结
From: https://blog.51cto.com/u_64214/7037492

相关文章

  • NKD:容器云集群与 OS 一体化运维利器
    NKD是NestOS-kubernetes-Deployer的缩写,是为了基于NestOS部署的Kubernetes集群运维工作准备的解决方案。其目标是在集群外提供对集群基础设施(包括操作系统和Kubernetes基础组件)的部署、更新和配置管理等服务。1.引言Kubernetes作为云原生领域容器云场景的事实标准,以其......
  • 运维管理工具的对比Puppet、Chef、Ansible和SaltStack、Fabric
    我们发现分布式是一个发展的趋势,无论是大型网站的负载均衡架构还是大数据框架部署,以及云存储计算系统搭建都离不开多台服务器的连续部署和环境搭建。当我们的基础架构是分散式或者基于云的,并且我们经常需要处理在大部分相同的服务器上频繁部署大致相同的服务时,我们就应该考虑自动化......
  • 对现代电网变电运维管理模式的浅析--安科瑞张田田
    安科瑞张田田摘要:当前,随着经济建设的不断发展,我国电力企业的快速发展受到了推动。在电力企业发展过程中,变电运行维护管理是一项重要内容。管理模式的好坏直接关系到整个电网的稳定发展。因此,在现代变电运行管理过程中,需要提高管理水平,提升平平供电企业的持续稳定发展,为人民群众提供......
  • 网工内推 | 高校招网工、运维,可落户厦门,IE认证优先
    01厦门工学院招聘岗位:网络工程师职责描述:1.负责学校网络架构的规划、设计、调整和性能优化,确保网络的性能、稳定和安全性。2.负责网络类、安全类,智慧教室等系统集成项目整体技术方案设计及配合项目实施。3.对建设项目进行跟踪,参与招、投标的技术评估。4.建设项目的组织、协调等......
  • 运维常用指令
     大体发版推送的步骤:拉取仓库代码构建包看是否运行集成及单元测试仓库代码提交设置流水线-阻止异常或是对现有业务产生影响的代码入正式代码仓库,测试左移,让低级别错误回归到dev,减轻QA测试压力node等前端静态页面其他jar.构建打jar包,或是用docker-compose维护发版......
  • 你是不是 可替代的Linux运维工程师?
    做技术行业久了,总会有一种危机感。技术更新太快,自己的学习时间又太少;刚刚抽时间学会Python,发现技术圈的潮流换成了GO语言;GO语言的书刚买回家吃了几天灰,常用的Linux操作系统又更新了一版。技术人总有学不完的新知识,探索不完的新领域。虽然有无穷的知识,但却没有无穷的精力,甚......
  • 不增加成本能更好应对生产系统稳定性意外故障的“开发测试运维三岗转为系统红蓝军”实
    系统红蓝军,不仅可以引导开发人员做好功能自测,更可以在不增加成本的情况下,引导企业有效应对生产系统稳定性***意外***故障。1基于观察企业经常出现意料之外的软件系统生产环境稳定性故障。2问出问题是什么原因导致企业经常出现意料之外的软件系统生产环境稳定性故障?3形成可......
  • 金恒设备智维管理平台 | 助力工业企业智能管理与高效运维
    设备是工厂生产的主体,在数字化浪潮下,设备智维成为生产企业数字化转型的重要一环。通过物联网、云计算、大数据等技术手段的融合,对设备进行智能化管理和维护,能有效提高运行效率、降低运维成本、增强企业竞争力。【平台特征】依托完善的设备管理体系,金恒科技搭建“一体化、精准化、智......
  • 函数(void *) 被谁调用了——图像采集卡经验总结
    一块图像采集卡上有两个CameraLink接口,程序里“采集卡”理解为:一个接口就是一个采集卡。即工控机上插一块,就是两个采集卡对象。【问题】函数(void*)被谁哪个采集卡调用了?下面通过IKap、Matrox、Silicon三个采集卡的案例来理解1、2、3、Windows的创建线程函数,LPVOID其实......
  • 7DGroup 性能/测试开发/运维 系列文章更新(2021/8)
    组织织简介1、7DGroup简介性能能闲谈1、浅谈window桌面GUI技术及图像渲染性能测试实践2、杂谈:性能测试的范围到底有多大?3、戏说CPU使用率-驳《CPU使用率度量指标是扯淡!》译文标题4、对性能测试评估分析优化市场的反思5、泛谈系统级跟踪和应用级跟踪6、性能测试分析优化该有的范围7......