这部技术葵花宝典真的很硬核

你有没有经历过:一大早就被疯狂的报警炸醒,由于线上应用 CPU 占用率过高 ......

你有没有经历过:刚到公司,板凳还没有捂热,收件箱里却一堆的客服投诉邮件,需要你排查日志定位问题 ......

你有没有经历过:下班的钟声即将敲响,但是你还要加班,进行统计应用每秒、每分钟的峰值等各个指标 ,由于 BOSS 要拿这些指标,在明天的技术大会上对外吹牛 ......

你有没有经历过:深夜正在酣眠,值班的运维疯狂给你打 CALL,由于线上应用内存出现了问题 ......

我敢保证上面的场景,大概率你都经历过。讲真,其实无论你是否经历过,今天你都算来着啦。因为我将要结合以往的经历总结,在猿门开坛设法,掏出葵花宝典施展一二。

水滴石穿非一日之功,冰冻三尺非一日之寒,罗马并非一日建成的,经验也并非一坑而促成的,防狼有术,我们先从全局,看一看这部技术宝典(看不清没关系,感觉到很牛掰就行)。

这部技术宝典真的很硬核,主要分四大招,见招拆招,让我们一一进行拆解。

第 1 招:线上应用占用 CPU 过高。

拆~招:

采用 top 命令,找出 CPU 占用最高的进程 PID;
通过 ps -ef | grep PID 查看对应的应用,看看是谁在作祟;
采用 jstack -l  PID >> PID.log 获取进程的堆栈信息;
采用 ps -mp PID -o THREAD,tid,time 拿到占用 CPU 最高的线程 tid;
采用 printf "%x\n" tid 获取 16 进制的线程 TID;
采用 grep TID -A20 PID.log 确定是线程哪儿出了问题。

最~后:腿疼医腿,辨症施治,对症下药。找准代码位置,进行调整代码。

 2 招:线上应用内存溢出。

拆~招:

采用 top 命令,找出应用对应的 PID;
采用 jmap -heap PID 确认一下分配的内存少不少;
采用 jmap -histo:live PID | more 找出分析最耗内存的对象【留意占用多少G的对象】;
采用 ps -efL | grep PID | wc -l 查看进程创建的线程数;
采用 ll /proc/PID/task | wc -l 也可以查看进程创建的线程数;
采用 netstat -apn | grep PID | wc -l 查看进程网络连接数。

最~后:腿疼医腿,辨症施治,对症下药。

a. 如果内存分配确实小,适当调整内存;
b. 对象被频繁创建,且不释放,优化代码;
c. 不断创建线程或者不断进行网络连接,优化代码。

 3 招:排查业务问题。

 

拆~招:

采用 tail -fn 200 log_file 实时查询线上日志;
找准日志搜所关键字keyWord,例如 orderId、mobileId、reqId 等;
采用 grep keyWord log_file 查询关键字所在的行的日志;
采用 grep -C n keyWord log_file 匹配关键字所在行的上下 n 行;
采用 grep keyWord log_file | wc -l 匹配关键字的的行数有多少。

最~后:根据实际排查日志场景进行日志搜索 tail 、grep 用的最多。

 4 招:BOSS 的统计问题。

拆~招:

采用 cat log_file 读取日志文件;
采用 cut 命令截取出日志的时间戳;
若按照秒统计截取到秒;若按照分钟统计截取到分钟;
采用 uniq -c 进行去重统计;
采用 sort -nr 按照第一列的数值大小进行倒序;
采用 head -1 只显示第一行内容。

  

最~后:统计问题迎刃而解,那么统计每秒峰值的命令该如何写呢?

例如日志:

1118 115856 066 - REQID0000000000188 ... ...

  

命令组合:

SecondPeak=`cat log_file|cut -d, -f1| cut -c 1-11|sort|uniq -c |sort -nr|head -1`

  

好了,今天的分享接近尾声,不知道你 get 到多少,懂与不懂,都建议你收藏,以备不时之需。

原文地址:https://www.cnblogs.com/socoool/p/12629780.html

时间: 2024-10-09 13:39:11

这部技术葵花宝典真的很硬核的相关文章

腾讯首席技术架构教你从C语言过渡到C++,真的很实用!

腾讯首席技术架构教你从C语言过渡到C++,真的很实用!说到C++和C语言的区别,大部分人都会想到面向对象和面向过程.然而这种说法并不准确.面向对象和面向过程指的是两种不同的程序设计思想,而C++与C是两种编程语言,难道C++就不能用于面向过程去解决问题吗,当然可以.而面向对象的设计思想也可以用到C语言中去,我之前的文章就涉及过这方面的知识.最后,如果大家如果在自学遇到困难,想找一个C++的学习环境,可以加入我们的C++学习圈,点击我加入吧,会节约很多时间,减少很多在学习中遇到的难题. 腾讯首席技

程序员不得不了解的硬核知识大全

我们每个程序员或许都有一个梦,那就是成为大牛,我们或许都沉浸在各种框架中,以为框架就是一切,以为应用层才是最重要的,你错了.在当今计算机行业中,会应用是基本素质,如果你懂其原理才能让你在行业中走的更远,而计算机基础知识又是重中之重.下面,跟随我的脚步,为你介绍一下计算机底层知识. CPU 还不了解 CPU 吗?现在就带你了解一下 CPU 是什么 CPU 的全称是 Central Processing Unit,它是你的电脑中最硬核的组件,这种说法一点不为过.CPU 是能够让你的计算机叫计算机的核

方国治:做股票真的很简单,简单到

http://blog.sina.com.cn/s/blog_5ae207160102vrlb.html 方国治:做股票真的很简单,简单到 (2015-07-11 20:00:18) 转载▼ 标签: 股票 分类: 投资大道 2015年6月13日,由七禾网和混沌天成北京营业部共同举办的“2015金融巅峰论坛暨第二期混沌天成北京沙龙”活动在北京鸿坤国际大酒店香江厅举行.由善境投资总经理吴洪涛.深圳开拓者科技有限公司副总经理陈四建.<趋势操盘法则>畅销书作者方国治,以及上海奇获投资管理有限公司投资总

嵌入ARM硬核的FPGA

目前,在FPGA上嵌入ARM硬核的包括Xilinx的zynq系列以及Intel 的CYCLONEV系列. Zynq出来有一定市场,但是这个市场不是传统FPGA的主流市场,而是为了和微处理抢一些控制领域的市场.但是目前在反响上,听说,不如预期,首先对小公司来说,同时熟悉ARM和FPGA的人不多,在大公司来说,由于他们面向的市场对专业分工要求更高,一般都使用FPGA+CPU的方式,对这类Zynq这种新鲜事物还是持保留态度的,观望的比较多. 但随着技术及工具的发展,zynq的使用越来越受到许多公司青睐

如何成为云中硬核“牧羊人”?云堡垒机服务高效运维,让云主机不再成为落单的小羊!

企业运维场景难点,自检你中招了哪些?? 企业运维账号众多企业运维的服务器数量众多,而维护人员数量有限,一个运维人员维护多台主机.多个系统的现象普遍存在.因此,运维人员不仅管理的机器账号密码多种多样,而且需要同时在多套主机系统之间切换.这种情况大大增加运维人员工作量,导致运维效率低下.易出错.影响IT系统正常运行. ? 权限分配粗放,缺乏细粒度企业运维授权一般是采用操作系统自身的授权系统,授权系统功能分散在各个设备和系统中,导致缺乏统一的运维操作授权策略:授权颗粒度粗,无法基于最小权限分配原则管理

[转帖]程序员需要了解的硬核知识之磁盘

https://www.cnblogs.com/cxuanBlog/p/11776310.html 此篇文章是 <程序员需要了解的硬核知识>系列第四篇,历史文章请戳 程序员需要了解的硬核知识之内存 程序员需要了解的硬核知识之CPU 程序员需要了解的硬核知识之二进制 我们大家知道,计算机的五大基础部件是 存储器.控制器.运算器.输入和输出设备,其中从存储功能的角度来看,可以把存储器分为内存和 磁盘,内存我们上面的文章已经介绍过了,那么此篇文章我们来介绍一下磁盘以及内存和磁盘的关系. 认识磁盘 首

干货|科技赋能硬核直播带货,助力业绩逆势增长

摘要:介绍直播项目开发的平台架构.前台技术.数据中台和运维保障支持等实践. 新年伊始,新冠疫情令许多企业遭遇生存危机,而每次危机和逆境,也都会带来新的商业机会.宜信财富迎难而上,勇于尝试线上销售新"路数"--直播带货,实现业绩逆势增长.2020年2月,宜信财富实现规模业绩同比2019年2月提升24%.环比1月增长8%:新增客户数同比2019年2月增长82%.环比1月增长23%的好成绩.回顾过去一个月,宜信财富没有浪费这场危机,做到了"危"中觅"机"

【转】 值得推荐的C/C++框架和库 (真的很强大)

[转] 值得推荐的C/C++框架和库 (真的很强大) 值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力.Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行. 下载链接:http://home.tiscali.cz/~cz210552/webbench.html - 2. T

别小看锤子,老罗真的很认真

老罗刚说做手机的时候,很多人嘲笑他,我也是看笑话的心态,直到我看到这样一张图片,我觉得我可能错了.发布会后,老罗说他认真,我相信. 这个是老罗的计算器应用,很普通的样子.第一次看到的时候我很吃惊.因为我看到了计算器屏幕上那一排淡淡的“8”. 用过真正的计算器的人都知道,液晶屏幕在光线的照射下会出现印子,即使没有通电,也会显示出淡淡数字"8". 但是手机屏幕可不是计算机器的数码屏幕,这个“8”是专门做上去的.众所周知,老罗的风格是拟物化,由此可见老罗的追求. 再看按键,每个按键的下面会有