此文章使用机器并无负载过高情况,只是记录一下排查思路。1、查看系统cpuload情况top1.1按c可按照cpu占用大小排序1.2按1可显示出多核cpu占用情况查出某一个进程占用高后可以使用top-H-p$pid详细查看进程中线程情况2、关于load的一些知识2.1load高不一定是性能有问题,可能是因为在进行cpu密集型计算2.2系统load高不一定是cpu能力问题或者数量不够,只是代表需要运行的队列累计过多了。但队列中的任务实际可能是耗Cpu的,也可能是耗i/0或者其他因素的。2.3系统长期Load高,解决办法不是一味地首先增加CPU,因为Load只是表象,不是实质。增加CPU个别情况下会
计数器、WMI获取设备的内存信息,如系统可用运行内存:1publicstaticasyncTaskdouble>GetMemoryAvailableAsync(FileSizeUnitfileSizeUnit=FileSizeUnit.GB)2{3returnawaitTask.Run(()=>4{5usingvarmanagementClass=newManagementClass("Win32_PerfFormattedData_PerfOS_Memory");6usingvarinstances=managementClass.GetInstances();7doubleavailabl
计数器、WMI获取设备的内存信息,如系统可用运行内存:1publicstaticasyncTaskdouble>GetMemoryAvailableAsync(FileSizeUnitfileSizeUnit=FileSizeUnit.GB)2{3returnawaitTask.Run(()=>4{5usingvarmanagementClass=newManagementClass("Win32_PerfFormattedData_PerfOS_Memory");6usingvarinstances=managementClass.GetInstances();7doubleavailabl
从排查一次匪夷所思的coredump,引出各种体系架构的差异。 本文中的所有内容来自学习DCC888的学习笔记或者自己理解的整理,如需转载请注明出处。周荣华@燧原科技1 背景从全世界有记载的第一台计算机Z1(computer)-Wikipedia在1936年发明,到1946年冯诺依曼体系架构的清晰提出,计算机体系架构的演进虽然没有什么革命性的变化,但各种体系架构的微调还是很明显的。 发展到现在虽然存在X86/ARM/MIPS/ALPHA/PPC/RISC-V等多种门派,但实际的设计思想上,主要有两种,一种是基于X86的系统架构,另外一种就是其他系统架构。为什么这么分?因为X86的很多特性,基本
从排查一次匪夷所思的coredump,引出各种体系架构的差异。 本文中的所有内容来自学习DCC888的学习笔记或者自己理解的整理,如需转载请注明出处。周荣华@燧原科技1 背景从全世界有记载的第一台计算机Z1(computer)-Wikipedia在1936年发明,到1946年冯诺依曼体系架构的清晰提出,计算机体系架构的演进虽然没有什么革命性的变化,但各种体系架构的微调还是很明显的。 发展到现在虽然存在X86/ARM/MIPS/ALPHA/PPC/RISC-V等多种门派,但实际的设计思想上,主要有两种,一种是基于X86的系统架构,另外一种就是其他系统架构。为什么这么分?因为X86的很多特性,基本
操作系统的核心功能就是管理计算机硬件,而CPU就是计算机中最核心的硬件。而通过学习笔记3的简史回顾,操作系统通过多进程图像实现对CPU的管理。所以多进程图像是操作系统的核心图像。参考资料:课程:哈工大操作系统(本部分对应L8&&L9)实验:操作系统原理与实践_Linux-蓝桥云课(lanqiao.cn)笔记:操作系统学习导引·语雀(yuque.com)1.从使用CPU开始直观理解CPU管理要想管理CPU,就要知道如何使用CPU。CPU的工作原理已经很熟悉:取指执行程序存放在内存中,每段指令对应一个地址CPU发出取指命令,将想去地址通过地址总线传到PC内存根据地址取出对应地址的指令从总线传回,C
操作系统的核心功能就是管理计算机硬件,而CPU就是计算机中最核心的硬件。而通过学习笔记3的简史回顾,操作系统通过多进程图像实现对CPU的管理。所以多进程图像是操作系统的核心图像。参考资料:课程:哈工大操作系统(本部分对应L8&&L9)实验:操作系统原理与实践_Linux-蓝桥云课(lanqiao.cn)笔记:操作系统学习导引·语雀(yuque.com)1.从使用CPU开始直观理解CPU管理要想管理CPU,就要知道如何使用CPU。CPU的工作原理已经很熟悉:取指执行程序存放在内存中,每段指令对应一个地址CPU发出取指命令,将想去地址通过地址总线传到PC内存根据地址取出对应地址的指令从总线传回,C
背景公司里的某负责保存用户文档的子系统有时会忽然cpu很高,过了大约5分钟后又恢复正常水平。领导协调让我帮看一下(我心里是:不熟悉这个子系统里面的代码,我尽力哈?)其实确实是这样的,如果熟悉出问题的系统的代码,会对诊断问题起到很大的帮助,否则就需要更多的利用对底层的理解了。分析打听后知道了这个子系统用.netcore写的,可以运行在windows和linuxdocker上,且这次的cpu高的问题,他们在windows运行也可复现。于是,我让他们在windows上运行,发现cpu高的时候dump一下。(然后windbg就可以准备下地干活了?)在用windbg看了大部分threadpoolwork
背景公司里的某负责保存用户文档的子系统有时会忽然cpu很高,过了大约5分钟后又恢复正常水平。领导协调让我帮看一下(我心里是:不熟悉这个子系统里面的代码,我尽力哈?)其实确实是这样的,如果熟悉出问题的系统的代码,会对诊断问题起到很大的帮助,否则就需要更多的利用对底层的理解了。分析打听后知道了这个子系统用.netcore写的,可以运行在windows和linuxdocker上,且这次的cpu高的问题,他们在windows运行也可复现。于是,我让他们在windows上运行,发现cpu高的时候dump一下。(然后windbg就可以准备下地干活了?)在用windbg看了大部分threadpoolwork
Redis是典型的单线程架构,所有的读写操作都是在一条主线程中完成的。当Redis用于高并发场景时,这条线程就变成了它的生命线。如果出现阻塞,哪怕是很短时间,对于我们的应用来说都是噩梦。导致阻塞问题的场景大致分为内在原因和外在原因:·内在原因包括:不合理地使用API或数据结构、CPU饱和、持久化阻塞等。·外在原因包括:CPU竞争、内存交换、网络问题等发现阻塞:当Redis阻塞时,线上应用服务应该最先感知到,这时应用方会收到大量Redis超时异常,比如Jedis客户端会抛出JedisConnectionException异常。完备的短信监控告警内在原因:API或数据结构使用不合理:通常Red