昨天早上刚到办公室,就接到客户的电话说其某台小型机的CPU负荷一直保持在90以上,告警短信发个不停,一直没有间断过。该服务器是一台IBM的小型机,性能应该还是不错的,出现这样的情况确实不太正常。登陆上小型机去TOPAS跟踪了一段时间,发现KERNEL主要保持在10-20之间,但是USER就一直保持在50-70。到底是什么用户进程耗费了那么多的CPU资源?该服务器是数据库服务器,上边运行的是SYBASE数据库。登陆到数据库上进行SYSMON,看到IO并不繁忙,但是CPU确实使用率比较高。跟踪观察到的现象级初步判断:1、数据库目前没有什么系统慢跟IO没有太大关系,WAIT IO也几乎接近于0。2、服务器应该主要都是在做计算型的操作。3、服务器上并没有部署有其他应用,就是数据库一个应用而已。

怎么回事?什么时候开始的呢?服务器发生了什么变化?经过与管理员沟通,发现昨晚该服务器对应的业务系统进行了程序更新的操作。按照以往的经验,估计是程序有问题了,而且从监控结果上看,IO不忙,也没有看到有大面积的阻塞,那数据库中实际上并没有存在什么大量的操作。那么,还有什么可能会产生这样的影响?“定时刷新、更新”类型的操作可能会有重大嫌疑。于是,立刻找到昨晚进行程序更新的人员,经过了解,昨晚更新的程序确实有包含一个会定时去检查接口状态,并从数据库读取数据送上接口的操作,并且频率设置是放在数据库的某个参数表里的。

是不是频率设置得不对,或者根本就是失效了呢?

“你们是在哪个表里进行记录执行频率信息的?我们去看看这条信息。“不查不知道,一查吓一跳,居然根本找不到那条信息,也就是说,程序失去了频率控制,由于程序写得不够严谨,造成了程序一直在不间断的往数据库发送相关打开连接、处理数据、关闭连接等相关请求。

”赶紧把频率设置好,你们本应该设置的频率是多久一次?“ 接着,赶紧把控制频率的记录插入到参数表中,将频率设置为每分钟一次。

CRT的窗口一直都在监控TOPAS的情况,在插入数据后,不到一分钟的时间,发现小型机的CPU负荷直接就回落到整体负荷在40%左右,这应该就是问题的根源了!接着又跟踪了一段时间,确实没有问题了,于是跟客户汇报了处理结果,并且召集了进行程序发布的相关人员,对此问题进行了分析、总结,并提出检查点的监控。希望,下一次这样的问题不要再出现了,希望通过这次事件的处理,开发人员都可以得到启发,认真检查好每一段代码,尽量不留下给别人可以犯错误的机会。

因程序问题引起的服务器CPU负荷一直保持在90%以上的更多相关文章

  1. 服务器CPU又爆了?Linux快速排查Java程序占用CPU很高的方法

    这个问题可以说是 Java 面试的高频面试题了,有很多面试官都喜欢问这个问题,问题可能是下面这样的. 线上一台服务器 CPU 使用率100% 了,如果你碰到这样的情况,如何排查并找到问题原因? 1.场 ...

  2. 服务器CPU使用率高的原因分析与解决办法

    我们的服务器在使用操作系统的时候,用着用着系统就变慢了,打开“ 任务管理器 ”一看,才发现CPU使用率达到80%以上.这是怎么回事情呢?遇到病毒了吗?硬件有问题?还是系统设置有问题呢?在本文中将从硬件 ...

  3. asp.net mvc4 简单的服务器监控开发之C#获取服务器CPU、RAM、TCP等系统信息(上)

    一.背景 前段时间服务器出了点问题,加上学业愈来愈紧张,写博文分享的时间越来越少.虽然不是第一次在博客园上写经验,但是近期分享的博文得到了不少的朋友支持和指正,在这里内心非常感激和开心.希望以后能认真 ...

  4. 在Ubuntu 11.10工具栏上用数字显示网速、CPU负荷和内存占用量『译』

    基本上照抄了<How To Display Network Upload / Download Speed On The Panel In Ubuntu 11.04>,只不过我的实践环境是 ...

  5. 服务器CPU繁忙或内存压力引起网络掉包的浅析与总结

      最近一段时间遇到了两起有意思的故障,现象都是网络掉包或网络断开,不过这些只是表面现象,引起现象出现的本质才是我们需要关注的重点: 案例1: 平台   :VMware平台 操作系统 :Windows ...

  6. 面试连环炮系列(八):服务器CPU飙升100%怎么排查

    服务器CPU飙升100%怎么排查 执行"top"命令,查看当前进程CPU占用的实时情况,PID列是进程号,确定是哪个应用程序的问题. 如果是Java应用导致的,怎么定位故障原因 执 ...

  7. 【转帖】处理器史话 | 服务器CPU市场的战役, AMD、Intel和ARM的厮杀

    处理器史话 | 服务器CPU市场的战役, AMD.Intel和ARM的厮杀 https://www.eefocus.com/mcu-dsp/377300   说完了个性鲜明的消费类电子,接下来聊一聊通 ...

  8. 将 Django 应用程序部署到生产服务器

    原文出自: http://www.ibm.com/developerworks/cn/opensource/os-django/ 比较有启发性质的一篇文章,会避免很多弯路 Django 是一个基于 P ...

  9. linux c++应用程序内存高或者占用CPU高的解决方案_20161213

    对于绝大多数实时程序来说,实时处理相关程序中的循环问题所带来的对机器的损耗和自身的处理速度的平衡,以及与其他程序的交互以及对其他功能的影响难免会成为程序设计中最大的障碍同时也是最大的突破点. 在所有这 ...

随机推荐

  1. gulp构建工具的安装

    第一步:node.js安装 在gulp安装之前,本机需要node环境.访问http://nodejs.org,然后点击大大的绿色的install按钮,下载完成后直接运行程序.npm会随着安装包一起安装 ...

  2. Telnet客户端连接服务器,看不见字符,只显示横线

    Telnet 窗口看不见字符,只显示小横线 在用telnet连接tomcat服务器的 时候,窗口中不显示字符,显示成一个一个的横线 解决办法: 按住“Ctrl+]” 回车解决问题

  3. JavaScript的正则表达式使用

    一:遇到问题 今天做项目时,在前台js对身份证号进行验证时,一直达不到预期的效果,我是监控文本域变量, $scope.watch('form.idNo',function(v){ if(!v){ re ...

  4. [改善Java代码]使用forName动态加载类文件

    动态加载(Dynamic Loading)是指在程序运行时加载需要的类库文件,对Java程序来说,一般情况下,一个类文件在启动时或首次初始化时会被加载到内存中,而反射则可以在运行时再决定是否需要加载一 ...

  5. asp.net下的b/s架构

    最近一直在做asp.net下的b/s架构的程序.整理一下可以采用的架构. 简单三层架构 基于接口和工厂模式的三层 前台用jquery调用http请求(ashx),ashx再调用逻辑接口 虽然很早就知道 ...

  6. MakeFile 文件详解

    GNU的make工作时的执行步骤入下:(想来其它的make也是类似)      1.读入所有的Makefile.      2.读入被include的其它Makefile.      3.初始化文件中 ...

  7. 【Linq to Object】使用LINQ实现左链接加GROUP BY查询

    直接上代码留记 var list = (from item in (from tb1 in fileDirList join tb2 in fileInfoList on tb1.FileDirId ...

  8. Cocos开发中性能优化工具介绍之Xcode中Instruments工具使用

    Instruments是动态分析工具,它与Xcode集成在一起,可以在Xcode中通过菜单Product→Profile启动.启动如图所示,Instruments有很多跟踪模板可以动态分析和跟踪内存. ...

  9. windows API 核心编程学习心得

    一.错误处理 在内部,当windows函数检测到错误时,它会使用“线程本地存储区”的机制将相应的错误代码与“主调线程”关联到一起. winError.h 一般在C:\Program Files\Mic ...

  10. spring事务到底用于service层还是dao层

    Spring事务为业务逻辑进行事务管理,保证业务逻辑上数据的原子性. 事务得根据项目性质来细分:事务可以设置到三个层面(dao层.service层和web层). 第一:web层事务,这一般是针对那些安 ...