出于安全及统计需要,运营系统需要采集所有生产服务器的对外端口开放情况。
4月27日凌晨,在近万台生产服务上批量推送了端口自检及扫描脚本,初期观察无异常。下午收到反馈有部分机器因为losf命令导致CPU负载很高,登录到机器上发现是自检脚本调用netstat及lsof命令引起单颗CPU负载过高。
于是紧急回退脚本,同时向运维同事要了一台连接数较大的机器测试,测试结果显示在连接数非常大时lsof及netstat命令会引起CPU占用异常。

这里之所以会调用lsof命令是为了获取绑定在指定端口上的进程名称。
自检脚本通过 netstat -lpn –inet 命令获取本机开放的端口列表,指定-p选项获取进程ID及名称。如果进程获取失败,会尝试通过lsof –i 命令获取绑定在端口上的进程名称。
当连接数较大时(超过10K),netstat及lsof命令因为要检索所有网络连接从而导致极高的CPU消耗。
显然,在连接数较大的机器上,类似netstat及lsof的命令应该是尽量避免使用的。

针对该问题,总结如下:
1、对批量部署的脚本要经过组内多人check之后方可上线,这样可以集思广益,避免因为开发人员考虑不周导致的代码故障。
2、脚本灰度发布时,尽量按机房及IP进行覆盖,以避免因业务差异导致灰度阶段无法及时暴露问题。以本次脚本为例,上线前按业务灰度时一直未发现异常,但批量更新后在连接数较高的机器上就出现了负载问题。这是因为按业务灰度时涉及的机器连接数都不高以致问题迟迟未能暴露。
3、对运营系统的脚本及程序进行足够的监控,以便及时发现问题。本次问题就是在运维同事反馈后才发现,暴露了支撑系统对自身脚本监控的不足。
4、脚本或程序批量上线前就做好一旦出现故障时的应对策略,以便在异常发生时能够及时处理,把对业务的影响降到最低。

lsof命令导致CPU负载异常的问题总结相关推荐

  1. 执行计划变化导致CPU负载高的问题分析 (r8笔记第20天)

    前几天碰到一个CPU负载较高的问题.从系统层面来看,情况不是很严重,但是从应用的角度来说,已经感觉到很慢了.因为前端的调用频率还是比较高.所以会把这个问题放大. Elapsed Time (s) CP ...

  2. linux命令查看cpu负载,Linux下使用w命令和uptime命令查看系统负载

    在Linux系统中查询系统CPU和内存的负载(使用率)时,我们通常习惯于使用top.atop或者ps,这篇文章将要给大家介绍如何使用w命令和uptime命令来查看系统的负载情况,对于uptime命令, ...

  3. linux命令查看cpu负载,怎么使用Linux命令查看CPU使用率

    在Linux系统操作中,有时需要查看cpu的使用率,这就需要用到Linux命令了,Linux查看cpu使用率的命令主要有4个,即top.vmstat.mpstat和prstat命令,一起来了解下吧. ...

  4. jenkins 的Build periodically导致CPU负载过高

    原因分析过程: 1.TOP找到cpu使用率较高的PID, 2.找到cpu只用率较高的线程: ps -mp pid -o THREAD,tid,time 3.转为16进制   printf " ...

  5. 记录一次服务器CPU负载高,利用率正常的处理方法

    背景: 在一次查看服务器监控的时候偶然发现其中一台服务器的CPU负载很高,但是CPU利用率基本没有,通过top命令完全看不出来问题所在,经过一些思路的排查发现了原因并处理,现记录下来. 现象: top ...

  6. CPU负载过高的原因

    一 系统中创建了大量的线程,这些线程并发运行,而且工作负载都很重,过多的线程同时运行就会导致CPU负载过高 二 JVM频繁的Full GC,非常耗费CPU资源 2.1 频繁Full GC的原因 内存分 ...

  7. Top,vmstat命令排查CPU使用率,负载问题

    ##Top,vmstat命令排查CPU使用率,负载问题 LINUX服务器CPU持续保持高使用率,则会对系统稳定性和业务运行造成影响. CPU使用率/负载查看命令: 第一种方法:使用vmstat命令查看 ...

  8. centos7 gam_server进程导致CPU使用率100%,系统负载很高

    现象 gam_server的进程占用吃满cpu,导致系统负载很高,top命令卡死 作用 gam_server是gamin的二进制文件,作用是文件交替监控 方案 找到最高的进程PID top是Linux ...

  9. CEPH RGW集群和bucket的zone group 不一致导致的404异常解决 及 使用radosgw-admin metadata 命令设置bucket metadata 的方法

    CEPH RGW集群和bucket的zone group 不一致导致的404异常解决 及 使用radosgw-admin metadata 命令设置bucket metadata 的方法 参考文章: ...

最新文章

  1. 实例方法-扩展器-生命zhou
  2. c语言程序设计的反思,C语言程序设计教学反思.doc
  3. 怎样使用Mendeley高效地管理中文文献
  4. 2021年高考成绩查询陕西文科,2021年陕西高考文科二本分数线预测
  5. C++自定义直方图统计
  6. 数据采集工具flume
  7. 机器学习之LDA主题模型算法
  8. B. A and B and Compilation Errors
  9. uniapp发布苹果IOS测试版 下载无法安装
  10. 数据库系统——基本概念
  11. 新手小白学JAVA IO流 File 字节流 字符流
  12. WebView加载淘宝,天猫链接失败
  13. Python 实现文字聊天室-功能拓展
  14. 卸载office提示无法打开修补程序包 修补程序包是否存在的解决方法.
  15. ArduPilot 开发环境安装
  16. python对于会计的好处_学好会计学的作用及意义
  17. PKUSC 模拟赛 day1 下午总结
  18. 2020-06 前端技术汇总
  19. 铁死亡,究竟该如何检测?- MedChemExpress
  20. QPainter绘制文本 二

热门文章

  1. HMI-53-【多媒体】音乐播放器 2
  2. lisp绘制直齿圆柱齿轮_基于AutoLISP的模拟滚齿以及滚刀齿形验证
  3. SecureCRT超级终端使用说明
  4. 谷歌浏览器配置(加密与解密笔记):chrome数据数据设置
  5. 基于TFS的持续集成搭建流程
  6. android多国语言翻译包命名,android多国语言翻译工具,一键生成28国家翻译6666翻车了...
  7. 浅谈easy-mock 最好的备胎没有之一
  8. 联想笔记本指纹未连接到计算机,联想笔记本电脑指纹识别如何设置?联想电脑指纹识别配置教程...
  9. 联想YOGA Air 14s笔记本怎么快速重装Win7系统教学
  10. android设备信息