一.分析CPU瓶颈 1,性能指标 a>CPU使用率 CPU使用率描述了非空闲时间占总CPU时间的百分比,根据CPU上运行任务的不同可以分为:用户CPU.系统CPU.等待I/O CPU.软中断和硬中断等 用户CPU使用率,包括用户态CPU使用率(user)和低优先级用户态CPU使用率(nice),表示CPU在用户态运行的时间百分比.用户CPU使用率高,通常说明有应用程序比较繁忙 系统CPU使用率,表示CPU在内核态运行的时间百分比(不包括中断).系统CPU使用率高,说明内核比较繁忙 等待I/O的C…
一.软中断 1,中断的定义 a>定义 举例:你点了一份外卖,在无法获知外卖进度的情况下,配送员送外卖是不等人的,到了发现没人取会直接走,所以你只能苦苦等着,时不时去门口看送到没有,无法干别的事情.优化方式就是约定让配送员送到后打电话告知就行,这里打电话就是属于一种中断. 定义:中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力.由于中断处理程序会打断其他进程的运行,所以为了较少对正常进程运行的调度的影响,中断处理程序就需要尽可能快地运行. b>问题 举例:如果定了两份外卖,一份主食一…
一.上节回顾 专栏更新至今,四大基础模块的最后一个模块——网络篇,我们就已经学完了.很开心你还没有掉队,仍然在积极学习思考和实践操作,热情地留言和互动.还有不少同学分享了在实际生产环境中,碰到各种性能问题的分析思路和优化方法,这里也谢谢你们. 今天是性能优化答疑的第五期.照例,我从网络模块的留言中,摘出了一些典型问题,作为今天的答疑内容,集中回复.同样的,为了便于你学习理解,它们并不是严格按照文章顺序排列的. 每个问题,我都附上了留言区提问的截屏.如果你需要回顾内容原文,可以扫描每个问题右下方的…
一.上节回顾 上一节,我们了解了 NAT(网络地址转换)的原理,学会了如何排查 NAT 带来的性能问题,最后还总结了 NAT 性能优化的基本思路.我先带你简单回顾一下. NAT 基于 Linux 内核的连接跟踪机制,实现了 IP 地址及端口号重写的功能,主要被用来解决公网 IP 地址短缺的问题. 在分析 NAT 性能问题时,可以先从内核连接跟踪模块 conntrack 角度来分析,比如用systemtap.perf.netstat 等工具,以及 proc 文件系统中的内核选项,来分析网络协议栈的…
一.上节回顾 上一节,我们学了网络性能优化的几个思路,我先带你简单复习一下. 在优化网络的性能时,你可以结合 Linux 系统的网络协议栈和网络收发流程,然后从应用程序.套接字.传输层.网络层再到链路层等每个层次,进行逐层优化.上一期我们主要学习了应用程序和套接字的优化思路,比如: 在应用程序中,主要优化 I/O 模型.工作模型以及应用层的网络协议: 在套接字层中,主要优化套接字的缓冲区大小. 今天,我们顺着 TCP/IP 网络模型,继续向下,看看如何从传输层.网络层以及链路层中,优化 Linu…
一.Linux内存工作原理 1,内存映射 Linux内核给每个进程都提供了一个独立的虚拟空间,并且这个地址空间是连续的.这样,进程就可以很方便地访问内存,更确切地说是访问虚拟内存. 虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同字长(也就是单个CPU指令可以处理数据的最大长度)的处理器,地址空间的范围也不同.比如常见的32位和64位系统 32位系统的内核空间占用1G,位于最高处,剩下的3G是用户空间 64位系统的内核空间和用户空间都是128T,分别占据整个内存空间的最高处和最低处,剩下…
一.上节回顾 不知不觉,我们已经学完了整个专栏的四大基础模块,即 CPU.内存.文件系统和磁盘 I/O.以及网络的性能分析和优化.相信你已经掌握了这些基础模块的基本分析.定位思路,并熟悉了相关的优化方法. 接下来,我们将进入最后一个重要模块—— 综合实战篇.这部分实战内容,也将是我们对前面所学知识的复习和深化. 我们都知道,随着 Kubernetes.Docker 等技术的普及,越来越多的企业,都已经走上了应用程序容器化的道路.我相信,你在了解学习这些技术的同时,一定也听说过不少,基于 Dock…
一.上节回顾 上一节,我们学习了碰到分布式拒绝服务(DDoS)的缓解方法.简单回顾一下,DDoS利用大量的伪造请求,导致目标服务要耗费大量资源,来处理这些无效请求,进而无法正常响应正常用户的请求. 由于 DDoS 的分布式.大流量.难追踪等特点,目前确实还没有方法,能够完全防御DDoS 带来的问题,我们只能设法缓解 DDoS 带来的影响. 比如,你可以购买专业的流量清洗设备和网络防火墙,在网络入口处阻断恶意流量,只保留正常流量进入数据中心的服务器. 在 Linux 服务器中,你可以通过内核调优.…
一.上节回顾 上一节,我们梳理了,应用程序容器化后性能下降的分析方法.一起先简单回顾下.容器利用 Linux 内核提供的命名空间技术,将不同应用程序的运行隔离起来,并用统一的镜像,来管理应用程序的依赖环境.这为应用程序的管理和维护,带来了极大的便捷性,并进一步催生了微服务.云原生等新一代技术架构. 不过,虽说有很多优势,但容器化也会对应用程序的性能带来一定影响.比如,上一节我们一起分析的 Java 应用,就容易发生启动过慢.运行一段时间后 OOM 退出等问题.当你碰到这种问题时,不要慌,我们前面…
一.上节回顾 上一节,我们学习了 NAT 的原理,明白了如何在 Linux 中管理 NAT 规则.先来简单复习一下. NAT 技术能够重写 IP 数据包的源 IP 或目的 IP,所以普遍用来解决公网 IP 地址短缺的问题.它可以让网络中的多台主机,通过共享同一个公网 IP 地址,来访问外网资源.同时,由于 NAT 屏蔽了内网网络,也为局域网中机器起到安全隔离的作用. Linux 中的 NAT ,基于内核的连接跟踪模块实现.所以,它维护每个连接状态的同时,也对网络性能有一定影响.那么,碰到 NAT…