文章分类 -  Linux 性能优化相关

摘要:使用 mtr 和 tcptraceroute 来侦测主机与目的主机端口之间的情况 ## mtr 安装和使用 ``` # 安装 yum install mtr -y # 如果没有,则使用 yum install epel-release -y yum install mtr -y # 使用方法,例子: 阅读全文
posted @ 2023-06-06 15:58 klvchen 阅读(847) 评论(0) 推荐(0)
摘要:https://elixir.bootlin.com/ 阅读全文
posted @ 2021-09-06 18:30 klvchen 阅读(19) 评论(0) 推荐(0)
摘要:环境:CentOS 7.8 # 安装 perl yum install perf -y # 安装 git yum install git -y # 下载 FlameGraph git clone https://github.com/brendangregg/FlameGraph.git 准备测试程 阅读全文
posted @ 2021-01-25 16:12 klvchen 阅读(823) 评论(0) 推荐(0)
摘要:性能排查思路 CPU 相关:https://www.cnblogs.com/klvchen/articles/13794981.html 内存 相关:https://www.cnblogs.com/klvchen/articles/13835350.html 硬盘I/O 相关:https://www 阅读全文
posted @ 2020-12-25 16:29 klvchen 阅读(18) 评论(0) 推荐(0)
摘要:要做好监控,最核心的就是全面的、可量化的指标,这包括系统和应用两个方面。 从系统来说,监控系统要涵盖系统的整体资源使用情况,比如我们前面讲过的 CPU、内存、磁盘和文件系统、网络等各种系统资源。而从应用程序来说,监控系统要涵盖应用程序内部的运行状态,这既包括进程的 CPU、磁盘 I/O 等整体运行状 阅读全文
posted @ 2020-12-13 14:46 klvchen 阅读(83) 评论(0) 推荐(0)
摘要:内核线程 在 Linux 中,用户态进程的“祖先”,都是 PID 号为 1 的 init 进程。 比如,现在主流的 Linux 发行版中,init 都是 systemd 进程;而其他的用户态进程,会通过 systemd 来进行管理。稍微想一下 Linux 中的各种进程,除了用户态进程外,还有大量的内 阅读全文
posted @ 2020-12-13 14:30 klvchen 阅读(99) 评论(0) 推荐(0)
摘要:https://elixir.bootlin.com/linux/latest/source 阅读全文
posted @ 2020-12-01 09:04 klvchen 阅读(17) 评论(0) 推荐(0)
摘要:指标工具 工具指标 网络性能优化 总的来说,先要获得网络基准测试报告,然后通过相关性能工具,定位出网络性能瓶颈。再接下来的优化工作,就是水到渠成的事情了。 当然,还是那句话,要优化网络性能,肯定离不开 Linux 系统的网络协议栈和网络收发流程的辅助。你可以结合下面这张图再回忆一下这部分的知识 接下 阅读全文
posted @ 2020-11-29 20:12 klvchen 阅读(685) 评论(0) 推荐(0)
摘要:DDoS 简介 DDoS 的前身是 DoS(Denail of Service),即拒绝服务攻击,指利用大量的合理请求,来占用过多的目标资源,从而使目标服务无法响应正常请求。 DDoS(Distributed Denial of Service) 则是在 DoS 的基础上,采用了分布式架构,利用多台 阅读全文
posted @ 2020-11-28 23:17 klvchen 阅读(348) 评论(0) 推荐(0)
摘要:I/O 模型优化 异步、非阻塞 I/O 的解决思路就是我们在网络编程中经常用到的 I/O 多路复用(I/O Multiplexing)。先来讲两种 I/O 事件通知的方式:水平触发和边缘触发,它们常用在套接字接口的文件描述符中。 水平触发:只要文件描述符可以非阻塞地执行 I/O ,就会触发通知。也就 阅读全文
posted @ 2020-11-28 22:58 klvchen 阅读(44) 评论(0) 推荐(0)
摘要:OSI 模型把网络互联的框架分为应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层等七层,每个层负责不同的功能。 应用层,负责为应用程序提供统一的接口。 表示层,负责把数据转换成兼容接收系统的格式。 会话层,负责维护计算机之间的通信连接。 传输层,负责为数据加上传输表头,形成数据包。 网络 阅读全文
posted @ 2020-11-22 17:31 klvchen 阅读(78) 评论(0) 推荐(0)
摘要:I/O 基准测试 fio(Flexible I/O Tester)正是最常用的文件系统和磁盘 I/O 性能基准测试工具。它提供了大量的可定制化选项,可以用来测试,裸盘或者文件系统在各种场景下的 I/O 性能,包括了不同块大小、不同 I/O 引擎以及是否使用缓存等场景。fio 的安装比较简单,你可以执 阅读全文
posted @ 2020-11-20 21:36 klvchen 阅读(284) 评论(0) 推荐(0)
摘要:Linux 内核支持四种 I/O 调度算法,分别是 NONE、NOOP、CFQ 以及 DeadLine。 第一种 NONE ,更确切来说,并不能算 I/O 调度算法。因为它完全不使用任何 I/O 调度器,对文件系统和应用程序的 I/O 其实不做任何处理,常用在虚拟机中(此时磁盘 I/O 调度完全由物 阅读全文
posted @ 2020-11-20 21:26 klvchen 阅读(198) 评论(0) 推荐(0)
摘要:Linux 文件系统为每个文件都分配两个数据结构,索引节点(index node)和目录项(directory entry)。它们主要用来记录文件的元信息和目录结构。 索引节点,简称为 inode,用来记录文件的元数据,比如 inode 编号、文件大小、访问权限、修改日期、数据的位置等。索引节点和文 阅读全文
posted @ 2020-10-19 23:16 klvchen 阅读(72) 评论(0) 推荐(0)
摘要:内存调优最重要的就是,保证应用程序的热点数据放到内存中,并尽量减少换页和交换。 常见的优化思路有这么几种。 最好禁止 Swap。如果必须开启 Swap,降低 swappiness 的值,减少内存回收时 Swap 的使用倾向。 减少内存的动态分配。比如,可以使用内存池、大页(HugePage)等。 尽 阅读全文
posted @ 2020-10-18 15:20 klvchen 阅读(60) 评论(0) 推荐(0)
摘要:Swap 原理 前面提到,Swap 说白了就是把一块磁盘空间或者一个本地文件(以下讲解以磁盘为例),当成内存来使用。它包括换出和换入两个过程。 所谓换出,就是把进程暂时不用的内存数据存储到磁盘中,并释放这些数据占用的内存。 而换入,则是在进程再次访问这些内存的时候,把它们从磁盘读到内存中来。 内核中 阅读全文
posted @ 2020-10-18 11:13 klvchen 阅读(296) 评论(0) 推荐(0)
摘要:内存映射 Linux 内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。这样,进程就可以很方便地访问内存,更确切地说是访问虚拟内存。 虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同字长(也就是单个 CPU 指令可以处理数据的最大长度)的处理器,地址空间的范围也不同。比 阅读全文
posted @ 2020-10-12 22:03 klvchen 阅读(28) 评论(0) 推荐(0)
摘要:先运行 perf record -g -p < pid>,执行一会儿(比如 15 秒)后,按 Ctrl+C 停止。 然后,把生成的 perf.data 文件,拷贝到容器里面来分析: $ docker cp perf.data phpfpm:/tmp $ docker exec -i -t phpfp 阅读全文
posted @ 2020-10-11 22:06 klvchen 阅读(866) 评论(0) 推荐(0)
摘要:如何才能降低 CPU 使用率,提高 CPU 的并行处理能力。 应用程序优化 首先,从应用程序的角度来说,降低 CPU 使用率的最好方法当然是,排除所有不必要的工作,只保留最核心的逻辑。比如减少循环的层次、减少递归、减少动态内存分配等等。 除此之外,应用程序的性能优化也包括很多种方法,我在这里列出了最 阅读全文
posted @ 2020-10-11 21:55 klvchen 阅读(111) 评论(0) 推荐(0)
摘要:在我们历经千辛万苦,通过各种性能分析方法,终于找到引发性能问题的瓶颈后,是不是立刻就要开始优化了呢?别急,动手之前,你可以先看看下面这三个问题。 首先,既然要做性能优化,那要怎么判断它是不是有效呢?特别是优化后,到底能提升多少性能呢? 第二,性能问题通常不是独立的,如果有多个性能问题同时发生,你应该 阅读全文
posted @ 2020-10-11 21:15 klvchen 阅读(160) 评论(0) 推荐(0)