首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux应用性能分析及故障排查

使用top命令,我们可以查询CPU使用率,等待,平均负载一些情况 注意:CPU负载和CPU使用率没有直接关系!!!...CPU上下文切换 CPU寄存器是CPU内置容量小,速度极快内存。...程序计数器用来存储CPU正在执行指令位置,即将执行下一条指令位置,这些都是CPU执行任务前,依赖环境,也叫做CPU上下文。...产生原因 等待磁盘I/O完成进程过多,导致进程队列长度过大,但是cpu运行进程却很少,这样就体现负载过大了,cpu使用率低 常见场景 磁盘读写请求过多导致大量IO等待Mysql死锁、Mysql全表扫描...理解Swap 简单来讲,就是用硬盘一块空间来当做内存使用。 内存不足时,会使用Swap,把进程暂时不用数据存储磁盘中 Swap会导致严重性能问题 理解Cached过大是怎么回事?

1.2K30

Linux性能优化

为了完成内存映射,内核为每个进程都维护了一个页表,记录虚拟地址和物理地址映射关系。页表实际存储在CPU内存管理单元MMU中,处理器可以直接通过硬件找出访问内存。...其中可回收内存包括: 缓存/缓冲区,属于可回收资源,在文件管理中通常叫做文件页 被应用程序修改过暂时没写入磁盘数据(脏页),先写入磁盘然后才能内存释放 在应用程序中通过fsync将脏页同步磁盘...Swap原理 Swap本质就是把一块磁盘空间或者一个本地文件当作内存来使用,包括换入和换出两个过程: 换出: 将进程暂时不用内存数据存储磁盘中,并释放这些内存 换入: 进程再次访问内存时,将它们从磁盘读到内存中...缓冲区: 原始磁盘临时存储,缓存将要写入磁盘数据 进程内存指标 虚拟内存: 5大部分 常驻内存进程实际使用物理内存,不包括Swap和共享内存 共享内存: 与其他进程共享内存,以及动态链接库和程序代码段...如用堆栈明确声明内存空间来存储需要缓存数据,或者用Redis外部缓存组件来优化数据访问 cgroups等方式来限制进程内存使用情况,确保系统内存不被异常进程耗尽 /proc/pid/oom_adj

2.7K20
您找到你想要的搜索结果了吗?
是的
没有找到

架构必知:Linux性能优化全景指南(建议收藏)

为了完成内存映射,内核为每个进程都维护了一个页表,记录虚拟地址和物理地址映射关系。页表实际存储在CPU内存管理单元MMU中,处理器可以直接通过硬件找出访问内存。...但是由于内存没有归还系统,在内存工作繁忙时,频繁内存分配/释放会造成内存碎片。 后者在释放时直接归还系统,所以每次mmap都会发生缺页异常。...Swap原理 Swap本质就是把一块磁盘空间或者一个本地文件当作内存来使用,包括换入和换出两个过程: 换出:将进程暂时不用内存数据存储磁盘中,并释放这些内存 换入:进程再次访问内存时,将它们从磁盘读到内存中...缓冲区:原始磁盘临时存储,缓存将要写入磁盘数据 进程内存指标 虚拟内存:5大部分 常驻内存进程实际使用物理内存,不包括Swap和共享内存 共享内存:与其他进程共享内存,以及动态链接库和程序代码段...如用堆栈明确声明内存空间来存储需要缓存数据,或者用Redis外部缓存组件来优化数据访问 cgroups等方式来限制进程内存使用情况,确保系统内存不被异常进程耗尽 /proc/pid/oom_adj

1.5K30

Linux 性能优化全景指南,可能都在这里了,建议收藏~

为了完成内存映射,内核为每个进程都维护了一个页表,记录虚拟地址和物理地址映射关系。页表实际存储在CPU内存管理单元MMU中,处理器可以直接通过硬件找出访问内存。...但是由于内存没有归还系统,在内存工作繁忙时,频繁内存分配/释放会造成内存碎片。 后者在释放时直接归还系统,所以每次mmap都会发生缺页异常。...Swap原理 Swap本质就是把一块磁盘空间或者一个本地文件当作内存来使用,包括换入和换出两个过程: 换出:将进程暂时不用内存数据存储磁盘中,并释放这些内存 换入:进程再次访问内存时,将它们从磁盘读到内存中...缓冲区:原始磁盘临时存储,缓存将要写入磁盘数据 进程内存指标 虚拟内存:5大部分 常驻内存进程实际使用物理内存,不包括Swap和共享内存 共享内存:与其他进程共享内存,以及动态链接库和程序代码段...如用堆栈明确声明内存空间来存储需要缓存数据,或者用 Redis 外部缓存组件来优化数据访问 cgroups 等方式来限制进程内存使用情况,确保系统内存不被异常进程耗尽 /proc/pid/oom_adj

1.9K21

终究还是败给了腾讯,秒挂了。。。

比如: CPU 密集型进程,使用大量 CPU 会导致平均负载升高,此时这两者是一致; I/O 密集型进程,等待 I/O 也会导致平均负载升高, CPU 使用率不一定很高; 大量等待 CPU 进程调度也会导致平均负载升高...,此时 CPU 使用率也会比较高。...如果没有空闲物理内存,那么内核就会开始进行回收内存工作,回收方式主要是两种:直接内存回收和后台内存回收。...设计一个 MySQL 索引数据结构,不仅仅考虑数据结构增删改时间复杂度,更重要考虑磁盘 I/0 操作次数。...通常,会把交换信息保存在进程 PCB,当运行另外一个进程时候,我们需要从这个进程 PCB 取出上下文,然后恢复 CPU 中,这使得这个进程可以继续执行,如下图所示: 大家需要注意,进程上下文开销是很关键

12510

Linux性能优化指北大全

为了完成内存映射,内核为每个进程都维护了一个页表,记录虚拟地址和物理地址映射关系。页表实际存储在 CPU 内存管理单元 MMU 中,处理器可以直接通过硬件找出访问内存。...但是由于内存没有归还系统,在内存工作繁忙时,频繁内存分配 / 释放会造成内存碎片。 后者在释放时直接归还系统,所以每次 mmap 都会发生缺页异常。...Swap 本质就是把一块磁盘空间或者一个本地文件当作内存来使用,包括换入和换出两个过程: 换出:将进程暂时不用内存数据存储磁盘中,并释放这些内存 换入:进程再次访问内存时,将它们从磁盘读到内存中 Linux...系统内存指标 已用内存 / 剩余内存 共享内存 (tmpfs 实现) 可用内存:包括剩余内存和可回收内存 缓存:磁盘读取文件页缓存,slab 分配器中可回收部分 缓冲区:原始磁盘临时存储,缓存将要写入磁盘数据...如用堆栈明确声明内存空间来存储需要缓存数据,或者用 Redis 外部缓存组件来优化数据访问 cgroups 等方式来限制进程内存使用情况,确保系统内存不被异常进程耗尽 /proc/pid/oom_adj

1K20

Linux vmstat 命令详解

这个命令是查看Linux/Unix最好命令,一个是Linux/Unix都支持,二是相比top,可以看到整个机器CPU,内存,IO使用情况,而不是单单看到各个进程CPU使用率内存使用率(使用场景不一样...工作原理: 在系统中运行每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配内存空间。...当系统运行所需内存超过实际物理内存,内核会释放某些进程所占用但未使用部分或所有物理内存,将这部分资料存储磁盘上直到进程下一次调用,并将释放出内存提供给有需要进程使用。...  每秒从磁盘读入虚拟内存大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,查找耗内存进程解决掉。...,直到cs一个比较小值,这个进程和线程数就是比较合适值了。

2K50

假日期间常见数据磁盘空间处理小结

磁盘类报警则相对来说属于性价比较高,对于运维侧需求则需要更进一步,那就是在重复度,复杂度平衡中找到一种普适处理办法,能够将这部分工作逐步通过自动化方式处理,也就是从处理故障变为故障自愈模式。...,我们会汇总为一个指标巡检大盘: 1)磁盘空间使用率,拆分为根目录使用率数据目录使用率 2)内存使用率 3)CPU使用率 4)inode使用率 5)系统负载情况 6)数据库延迟 这份指标能够发现绝大多数明显问题...二.系统层处理 系统层处理硬伤问题相对比较少,主要碰到几类: 1)查看系统层空间使用异常,但是进程没有释放相关句柄,导致空间没有彻底释放。...比如一个nohup任务生成日志比较大,我们手工删除了生成日志文件,但是空间却没有释放,一般来说,可以使用lsof来得到相关句柄明细,也可以看到磁盘空间占用较高文件对应进程,顺着这条线分析,...三.数据库层处理 数据库层清理可做空间相对比较大,前提是你给自己预留空间足够大,否则坑足够大处理起来会比较纠结。

47330

第十三章 系统资源管理

,同步硬件中 13.3 CPU性能分析 13.3.1 CPU使用率分析 一台计算机中,最重要硬件当属cpu了,我们虽然可以查看得到cpu型号、参数,但在系统运行中,cpu具体使用率,也是我们重点关注数据...当网速较慢时,播放器会显示正在缓冲。可以想象,正在缓冲播放器,并未被关闭,但由于电影数据未能下载完毕,还不能播放,则该播放器即处于等待读写状态。...buffer是指有数据写入磁盘缓冲区,cache表示从磁盘读取出文件时在内存中使用缓存。...但是有些软件特点是会占据所有剩余内存或部分内存(虽然实际不会真正全部使用到),所以有些服务器上查看内存使用率较高,甚至达到90%+,不过这对系统速度和正常使用影响不大。...我们以QQ程序为例,没有起来时,QQ程序存放于磁盘分区中,被运行起来后,在windows任务管理器进程页中,会显示为QQ.exe进程。QQ程序整个执行过程又可分为以下多个步骤,如图: ?

97620

如何诊断处理生产环境服务器变慢

针对这个问题,我们可以使用top命令查询当前系统中占用CPU过高进程,并定位这个进程中比较活跃线程。再通过jstack命令打印当前虚拟机线程快照,根据快照日志排查问题代码。...详细流程可以参考我这篇文章: 如何定位当生产环境CPU飙升时候问题 二、磁盘I/O效率 在程序运行过程中会直接或者间接涉及一些与磁盘I/O相关操作,比如程序直接读/写磁盘或者程序依赖第三方组件对磁盘进行持久化存储...三、内存瓶颈 内存作为一块临时存储数据组件,所有CPU运行指令都需要从内存中去读/写。内存合理使用可以减少应用和磁盘I/O频率,减少网络I/O频率,极大地提升I/O性能。...当内存使用率较高时,可以用dump命令查出JVM堆内存,用MAT工具进行分析,查出大对象或者占用内存最多对象,以及排查是否存在内存泄漏问题。...最后,预防服务器变慢需要定期检查、备份数据、优化代码等措施。 在未来工作中,我们需要更加注重服务器维护和优化,定期检查服务器性能和状态,及时发现并解决问题。

9810

京东Elasticsearch使用ChubaoFS实现计算存储分离

这些场景对磁盘内存有比较高要求,因此,京东也做了相应优化,用于减少内存消耗,提升磁盘整体使用率,使用更廉价磁盘来降低成本等等。...ChubaoFS 设计每个 pod 可以共享一个存储卷,或者每个 pod 一个存储卷,当容器所在物理机宕机后,容器数据可以随着容器被同时调度其他宿主机上, 保障数据可靠存储。 ?...初始阶段 最初,京东 Elasticsearch 集群部署是完全没有架构可言,集群配置也都采用默认配置,一台物理机启动多个 Elasticsearch 进程进程间完全共享服务器资源,不同业务之间使用集群进行隔离...物理机内存被 cache 占用,新创建实例启动时耗时特别长。 实例存储受单机磁盘容量限制,数据迁移时有发生。...启动对资源消耗低很多,可以做到快速启停。另外由于是资源限制类,只限制最大使用量而不隔离最小,这样又可以做到虚拟化进行资源超买,提升资源使用率

2.2K30

Linux系统内存监控、性能诊断工具vmstat命令详解

这个命令是我查看 Linux/Unix 最喜爱命令,一个是 Linux/Unix 都支持,二是相比 top,我可以看到整个机器 CPU,内存,IO 使用情况,而不是单单看到各个进程 CPU 使用率内存使用率...si  每秒从磁盘读入虚拟内存大小,如果这个值大于 0,表示物理内存不够用或者内存泄露了,查找耗内存进程解决掉。我机器内存充裕,一切正常。...bi  块设备每秒接收块数量,这里块设备是指系统上所有的磁盘和其他块设备,默认块大小是 1024byte,我本机上没什么 IO 操作,所以一直是 0,但是我曾在处理拷贝大量数据(2-3T)机器上看过可以达到...in 每秒 CPU 中断次数,包括时间中断 cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程切换,也要进程上下文切换,这个值越小越好,太大了,考虑调低线程或者进程数目,...例如在 apache 和 nginx 这种 web 服务器中,我们一般做性能测试时会进行几千并发甚至几万并发测试,选择 web 服务器进程可以由进程或者线程峰值一直下调,压测,直到 cs 一个比较小

2.6K50

linux服务器性能问题相关排查手册(总结向)

基本概念解释 cpu平均负载 定义:平均负载是指单位时间内,系统处于可运行状态和不可中断状态平均进程数,也就是平均活跃进程数,和 CPU 使用率没有直接关系。...0.50:没有任何作业在等待, CPU 正在处理以前作业,并且它正在以 50% 容量进行处理。在这种情况下,操作系统还可以立即将 CPU 时间分配给其他进程,而无需将其置于保持状态。...1.00:队列中没有作业, CPU 正在以 100% 容量处理先前作业,因此如果新进程请求 CPU 时间,则必须将其保留到另一个作业完成或当前 CPU 插槽时间(例如,CPU tick)到期,操作系统决定哪一个是下一个给定进程优先级...CPU 密集型进程,使用大量 CPU 会导致平均负载升高;大量等待 CPU 进程调度也会导致平均负载很高,此时 CPU 使用率也会比较高。...Shared:多个进程共享内存总额 Buffers/cached:磁盘缓存大小,Buffers是系统存放需要写入磁盘数据临时区域,cached是操作系统从磁盘中读取进来缓存数据 第一行 Mem

2K21

关于Linux中使用USE(使用率饱和度错误)方法分析系统性能一些笔记

饱和度 :资源不能再服务更多额外工作程度,通常有等待队列。 错误 :错误事件个数。 这里需要注意是:某些资源类型,比如内存磁盘使用率指的是资源所用容量。...所幸是,常见问题用较简单指标就能发现(例如,CPU饱和度、内存容量饱和度、网络接口使用率磁盘使用率),所以这些指标首先测量。...使用率超过60%可能会是问题,基于以下理由: 时间间隔均值,可能掩盖了100%使用率短期爆发 一些资源,诸如硬盘(不是CPU),通常在操作期间是不能被中断,即使做是优先级较高工作。...尽管CPU并没有100%地被使用,已经达到了控制上限,因此可运行线程就必须等待轮到它们机会。...关于内存使用率,前面的建议可得,100%使用率通常是瓶颈信号(检查饱和度并确认其影响)。使用率超过60%可能会是问题,所以对于内存平均使用率尽量保持70%以内,超过70%,考虑扩容。

84111

闻茂泉:系统性能监控与分析工程化实践之路

另一方面,对于内核计数器不能涵盖细颗粒度内核数据,还必须要依赖内核跟踪采样工具获取。比如当IOPS较高时,我们想了解具体每一个IO读写具体文件信息,内核计数器中完全没有相关信息。...同时对于一些高频使用常规指标,如CPU、内存和网络使用率情况,使用白屏化监控平台展示,确实可以大大提升可观测性。...为了追求更加完美的磁盘空间稳定性,ssar仍然设计了更加积极磁盘存储空间策略。还设置了专门参数,当磁盘空间使用率达到阈值(默认90%)后,会停止数据采集。...不但如此,当由于其他进程原因使磁盘空间数据继续增长并超过90%时,ssar会启动对7天内较早历史数据删除工作,直到磁盘空间使用率小于90%或将ssar历史数据基本删除。...唯一缺点就是磁盘打满同时又需要消费ssar数据场景,这个场景概率极低。

77531

Linux vmstat命令实战详解

这个命令是我查看Linux/Unix最喜爱命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器CPU,内存,IO使用情况,而不是单单看到各个进程CPU使用率内存使用率(使用场景不一样...si  每秒从磁盘读入虚拟内存大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,查找耗内存进程解决掉。我机器内存充裕,一切正常。...bi  块设备每秒接收块数量,这里块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)机器上看过可以达到...in 每秒CPU中断次数,包括时间中断 cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程切换,也要进程上下文切换,这个值越小越好,太大了,考虑调低线程或者进程数目,例如在...apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发测试,选择web服务器进程可以由进程或者线程峰值一直下调,压测,直到cs一个比较小值,这个进程和线程数就是比较合适值了

94220

Linux系统查看CPU「建议收藏」

相比top,通过vmstat可以看到整个机器 CPU,内存,IO使用情况,而不是单单看到各个进程CPU使用率内存使用率。...这表示vmstat每2秒采集数据,一直采集,直到我结束程序。 参数解释: vmstat命令输出分成六个部分: (1)进程procs: r:在运行队列中等待进程数 。...si 每秒从磁盘读入虚拟内存大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,查找耗内存进程解决掉。 so 每秒虚拟内存写入磁盘大小,如果这个值大于0,同上。...cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程切换,也要进程上下文切换,这个值越小越好,太大了,考虑调低线程或者进程 数目,例如在apache和nginx这种web服务器中...,我们一般做性能测试时会进行几千并发甚至几万并发测试,选择web服务器进程可以由进程或 者线程峰值一直下调,压测,直到cs一个比较小值,这个进程和线程数就是比较合适值了。

5.8K40

60 秒 Linux 检查清单,快速初步定位你性能问题

在Linux 系统中,这些数字包含了想要在 CPU 上运行进程,同时也包含了阻塞在不可中断 I/O(通常是磁盘 I/O)上进程。...对于比较高 %iowait 时间也要注意,可以使用磁盘 I/O 工具进一步分析 ;如果出现较高 %sys 值,可以使用系统调用(syscall)跟踪和内核跟踪,以及 CPU 剖析等手段进一步分析。...top(1) 命令虽然也很流行,但是pidstat(1) 默认支持滚动打印输出,这样可以采集不同时间段数据变化。...尽管这个改动已经被撤回了,还是提醒你注意一下是否使用了有错误改动pidstat(1)版本。 6. iostat -xz 1 这个工具显示了存储设备 I/O 指标。...它只是报告某个设备在一段时间内100%繁忙,并没有说设备使用率达到100%了:此时也许仍然可以接受更高负载。

33920

系统性能分析工具ssar

另一方面,对于内核计数器不能涵盖细颗粒度内核数据,还必须要依赖内核跟踪采样工具获取。比如当IOPS较高时,我们想了解具体每一个IO读写具体文件信息,内核计数器中完全没有相关信息。...同时对于一些高频使用常规指标,如CPU、内存和网络使用率情况,使用白屏化监控平台展示,确实可以大大提升可观测性。...为了追求更加完美的磁盘空间稳定性,ssar仍然设计了更加积极磁盘存储空间策略。还设置了专门参数,当磁盘空间使用率达到阈值(默认90%)后,会停止数据采集。...不但如此,当由于其他进程原因使磁盘空间数据继续增长并超过90%时,ssar会启动对7天内较早历史数据删除工作,直到磁盘空间使用率小于90%或将ssar历史数据基本删除。...后续当整机free内存逐步恢复绿线high阈值以上后,kswapd线程停止内存回收工作

77320

《ios爆内存问题解决方案-OOMDetector组件》

内存触顶时候,组件会定时Dump这些堆栈信息本地磁盘,这样如果程序爆内存了,就可以将爆内存前Dump堆栈数据上报到后台服务器进行分析。 ?...通过这种方式可以把耗时较高符号还原工作放到服务器端,客户端只需要执行耗时较少堆栈函数地址回溯操作,优化后堆栈回溯方法耗时低于1us。 ?...假设App内存块个数为25W,堆栈平均深度20行,每个堆栈地址采用8字节整型数据存储,那么25W个堆栈数据将占用40M内存空间。...所以我们优化思路也很明确:只保留内存占用较大堆栈。完成这个工作就必须对内存中所有堆栈先进行聚类合并,统计出每个堆栈累计内存值。...数据Dump方案 前面提到,在内存触顶后要将内存堆栈数据定时Dump磁盘中,常规方案是IO接口直接把数据写入磁盘。因为数据Dump频率较高,频繁IO操作会导致程序卡顿。

6.1K61
领券