![](https://img-blog.csdnimg.cn/20201112145156521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux
Linux常用的性能分析工具合集;
30个Linux性能问题诊断思路;
读懂CPU、内存、I/O等指标;
5个真实的线上环境分析案例。
码农架构
专注于系统架构、高可用、高性能、高并发类技术分享
展开
-
从Linux源码看TIME_WAIT状态的持续时间
从Linux源码看TIME_WAIT状态的持续时间前言笔者一直以为在Linux下TIME_WAIT状态的Socket持续状态是60s左右。线上实际却存在TIME_WAIT超过100s的Socket。由于这牵涉到最近出现的一个复杂Bug的分析。所以,笔者就去Linux源码里面,一探究竟。首先介绍下Linux环境TIME_WAIT这个参数通常和五元组重用扯上关系。在这里,笔者先给出机器的内核参数设置,以免和其它问题相混淆。cat /proc/sys/net/ipv4/tcp_tw_reus原创 2020-11-11 19:57:00 · 362 阅读 · 1 评论 -
分享Linux 机器 CPU 毛刺问题排查经历
本文中提到 CPU 统计和产生 core 文件的工具详见simple-perf-tools仓库。问题描述某服务所在机器统计显示,其 CPU 使用率在高峰时段出现毛刺。暂时未收服务调用方的不良反馈。初步排查查看 CPU 1 分钟平均负载,发现 1 分钟平均负载有高有低,波动明显。说明机器上有些进程使用 CPU 波动很大。登录机器排查进程,使用top指令。因为 CPU 会明显上升,重点怀疑使用 CPU 总时间高的进程,在打开 top 后,使用shift+t可以按照 CPU ...原创 2020-10-16 15:53:49 · 1138 阅读 · 0 评论 -
攻击流量超过300G,遭遇DDoS时我们能做些什么?
一、 DDOS 攻击原理Distributed Denial of Service(DDoS),即分布式拒绝服务攻击,是指攻击者通过远程连接恶意程序控制大量僵尸主机(全国范围甚至全球范围的主机)向一个或多个目标发送大量攻击请求,消耗目标服务器性能或网络带宽,导致其无法响应正常的服务请求。常见攻击类型包括 SYN Flood、ACK Flood、UDP Flood、ICMP Flood 以及 DNS/NTP/SSDP/memcached 反射型攻击。DDoS 攻击会对您的业务造成以..原创 2020-10-15 23:54:09 · 898 阅读 · 1 评论 -
Redis响应严重延迟,如何解决?
Redis 是最常用的键值存储系统之一,常用作数据库、高速缓存和消息队列代理等。Redis 基于内存来存储数据,不过,为了保证在服务器异常时数据不丢失,很多情况下,我们要为它配置持久化,而这就可能会引发磁盘 I/O 的性能问题。今天,我就带你一起来分析一个利用 Redis 作为缓存的案例。这同样是一个基于 Python Flask 的应用程序,它提供了一个 查询缓存的接口,但接口的响应时间比较长,并不能满足线上系统的要求。案例准备本次案例还是基于 Ubuntu 18.04,同样适用于其他的 Linux原创 2020-09-28 12:29:27 · 2000 阅读 · 0 评论 -
怎么理解内存中的Buffer和Cache?
1|0缓存 从 free 命令可以看到,缓存其实就是 Buffer 和 Cache 两部分的总和 字面意思,Buffer 是缓存区,Cache 是缓存,两者都是数据再内存中的临时存储 2|0Buffer 和 Cache 的区别man free执行上面的命令,可以从帮助手册中看到 buffer 和 cache 说明 Buffers:内核缓冲区用到的内存,对应的是 /proc/meminfo 中的Buffers值 Cache:内核页缓存和 Sla...原创 2020-08-18 01:23:34 · 1643 阅读 · 0 评论 -
Linux性能优化实战: Linux 磁盘I/O是怎么工作的(上)
文件系统是对存储设备上的文件,进行组织管理的一种机制。而 Linux 在各种文件系统实现上,又抽象了一层虚拟文件系统 VFS,它定义了一组,所有文件系统都支持的,数据结构和标准接口。这样,对应用程序来说,只需要跟 VFS 提供的统一接口交互,而不需要关注文件系统的具体实现;对具体的文件系统来说,只需要按照 VFS 的标准,就可以无缝支持各种应用程序。VFS 内部又通过目录项、索引节点、逻辑块以及超级块等数据结构,来管理文件。目录项,记录了文件的名字,以及文件与其他目录项之间的目录关系。 索引节原创 2020-08-18 00:47:55 · 371 阅读 · 0 评论 -
Linux性能优化实战:某个应用的CPU使用率居然达到100%,我该怎么办?
CPU 使用率是单位时间内 CPU 使用情况的统计,以百分比的方式展示。那么,作为最常用也是最熟悉的 CPU 指标,你能说出 CPU 使用率到底是怎么算出来的吗?再有,诸如 top、ps 之类的性能工具展示的 %user、%nice、 %system、%iowait 、%steal 等等,你又能弄清楚它们之间的不同吗?今天我就带你了解 CPU 使用率的内容,同时,我也会以我们最常用的反向代理服务器 Nginx 为例,带你在一步步操作和分析中深入理解。CPU 使用率在上一期我曾提到,Linux 作原创 2020-08-16 15:14:37 · 793 阅读 · 0 评论 -
Linux性能优化实战:经常说的 CPU 上下文切换是什么意思?(下)
上一节,我给你讲了 CPU 上下文切换的工作原理。简单回顾一下,CPU 上下文切换是保证 Linux 系统正常工作的一个核心功能,按照不同场景,可以分为进程上下文切换、线程上下文切换和中断上下文切换。具体的概念和区别,你也要在脑海中过一遍,忘了的话及时查看上一篇。怎么查看系统的上下文切换情况既然上下文切换对系统性能影响那么大,你肯定迫不及待想知道,到底要怎么查看上下文切换呢?在这里,我们可以使用 vmstat 这个工具,来查询系统的上下文切换情况。vmstat 是一个常用的系统性能分析工具,主要原创 2020-08-16 14:50:06 · 237 阅读 · 0 评论 -
Linux性能优化实战:经常说的 CPU 上下文切换是什么意思?(上)
我想你一定很好奇,进程在竞争 CPU 的时候并没有真正运行,为什么还会导致系统的负载升高呢?看到今天的主题,你应该已经猜到了,CPU 上下文切换就是罪魁祸首。我们都知道,Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行。当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短的时间内,将 CPU 轮流分配给它们,造成多任务同时运行的错觉。而在每个任务运行前,CPU 都需要知道任务从哪里加载、又从哪里开始运行,也就是说,需要系统事先帮它设置好 CPU 寄存器和程序计数器(原创 2020-08-15 13:24:10 · 420 阅读 · 0 评论 -
Linux性能优化实战:到底应该怎么理解“平均负载”?
每次发现系统变慢时,我们通常做的第一件事,就是执行 top 或者 uptime 命令,来了解系统的负载情况。比如像下面这样,我在命令行里输入了 uptime 命令,系统也随即给出了结果。$ uptime02:34:03 up 2 days, 20:14, 1 user, load average: 0.63, 0.83, 0.88但我想问的是,你真的知道这里每列输出的含义吗?我相信你对前面的几列比较熟悉,它们分别是当前时间、系统运行时间以及正在登录用户数。02:34:03原创 2020-08-15 13:11:38 · 190 阅读 · 0 评论