Linux性能优化实战学习笔记:第十讲==中断
Linux性能优化实战学习笔记:第十讲
一、坏境准备
1、拓扑图
2、安装包
在第9节的基础上
在VM2上安装hping3依奈包
?
1 2 3 4 5 6 7 |
|
在VM2上安装hping3的安装
?
1 2 3 4 |
|
3、实验环境准备
1、运行案例终端一
?
1 2 3 4 5 6 7 8 9 10 11 |
|
2、确认nginx正常启动(终端二)
?
1 2 3 4 5 6 |
|
3、运行 hping3 命令,来模拟 Nginx 的客户端请求(终端二)
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
二、分析过程
1、查看系统整体的资源使用情况(终端一)
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
根据上一期的内容,既然软中断可能有问题,那你先要知道究竟是哪类软中断的问题?
1、是系统运行以来的累积中断次数?
不过,这里的各类软中断次数,又是什么时间段里的次数呢?它是系统运行以来的累积中断次数,
所以我们直接查看文件内容,得到的只是累积中断次数,对这里的问题并没有直接参考意义,因为这些中断次数的变化速率才是我们需要关注的
2、观察各种软中断类型的次数(终端一)
?
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1、通过/proc/softirqs 文件内容的变化情况,你可以发现, TIMER(定时中断)、NET_RX(网络接收)、SCHED(内核调度)、RCU(RCU 锁)等这几个软中断都在不停变化。
2、其中NET_RX,也就是网络数据包接收软中断的变化速率最快。而其他几种类型的软中断,是保证 Linux 调度、时钟和临界区保护这些正常工作所必需的,所以它们有一定的变化倒是正常的。
那么接下来,我们就从网络接收的软中断着手,继续分析,既然是网络接收的软中断,第一步应该是观察系统的网络接收情况。这里你可能想起很多网络工具,不过我推荐今天的主人工sar
3、观察系统的网络接收情况(终端一)
sar可以用来查看系统的网络首发情况,还有一个好处,不可以观察网络收发的吞吐量(BPS,每秒收发的字节数),还可以观察网络收发的PPS,即每秒收发的网络帧数
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
sar命令图解
我们具体来看输出的内容,你可以发现:每秒接收的网络帧数远大于发送的网络帧数
既然怀疑是网络中断的问题,我们还是重点来看eth0接收的BPS很小,稍微计算一下,说明平均每个网络帧数只有54字节,这显然是很小的网络帧,这也就是我们通常所说的小包问题
4、这是一个什么样的网络帧?从哪里发过来的呢?(终端一)
那么,有没有办法知道这是一个什么样的网络帧,以及从哪里发过来的呢?
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
从tcpdump的输出中,你可以发现
1、192.168.118.105.64382 > 192.168.118.97 表示网络帧从192.168.118.105的64382端口到192.168.118.97的80端口,也就是运行hping3 机器的 64379 端口发送网络帧,
2、目的位Nginx所在机器的80端口
3、Flags [S] 则表示这是一个 SYN 包
再加上前面用 sar 发现的, PPS 超过 12000 的现象,现在我们可以确认,这就是从192.168.118.105 这个地址发送过来的SYN FLOOD 攻击
三、小结
到这里,我们已经做了全套的性能诊断和分析。
1、从系统的软中断使用率高这个现象出发,
2、通过观察/proc/softirqs 文件的变化情况,判断出软中断类型是网络接收中断
3、再通过 sar 和 tcpdump ,确认这是一个 SYN FLOOD问题
4、SYN FLOOD 问题最简单的解决方法,就是从交换机或者硬者硬件防火墙中封掉来源 IP,这样 SYN FLOOD 网络络帧就不会发送到服务器中
软中断CPU使用率升高是一种很常见的性能问题,虽然软中断的类型很多,但实际生产中,我们遇到的性能瓶颈大多数是网络收发类型的软中断,特别是网络接收的软中断
在碰到这类问题时,你可以借用sar、tcpdump等工具,做进一步分析,不要害怕网络性能,后面我们会教你更多的分析方法
四、思考题
1、你所碰到的软中断问题。
我的理解比较简单粗暴, 硬中断是硬件产生的,比如键盘、鼠标的输入,硬盘的写入读取、网卡有数据了;软中断是软件产生的,比如程序内的定时器、[文中提到的RCU锁]。
再加上今天的上半部下半部,更好的理解了网卡的处理实际是有硬中断和软中断的。
2、你所碰到的软中问题是哪种类型
有,且是血淋淋的教训。
之前的c程序用到了别人写的动态库[如:lib.a],在物理机上,进程的cpu利用率在0%;而切换到了云服务器,即使空载,单进程的cpu利用率都有30%+。
以前没经验嘛,各种自查,无结果,但是自己的进程cpu利用率又那么高,总是不安心.
后来才通过vmstat 检测到系统的软中断每秒有100W+次.
最后各自百度,找人,才发现是那个动态库在处理网络收发消息时,使用了usleep(1)来休息,每次休息1纳秒,单次中断的耗时都不止1纳秒.
3、是不是这个案例中的小包问题?
如果是现在,我会如下分析:
1.检测是哪个线程占用了
?
1 |
|
2.在进程中打印各线程号. 找到是哪个线程.[ 此过程也可以省略 但可以快速定位线程]
3.第一步应该可以判断出来中断数过高. 再使用 cat /proc/softirqs 查看是哪种类型的中断数过高.
4.不知道perf report -g -p XX 是否可以定位到具体
5.最终还是要查看源码,定位具体的位置,并加以验证.
4、你又是怎么分析它们的来源并解决的呢?
本期又学到新东西了:
1.sar 原来可以这么方便的看各网卡流量,甚至是网络帧数.
到目前为止,我都是用的最原始的方法:在网上找的一个脚本,分析ifconfig中的数据,来统计某个网卡的流量.一来需要指定某个网卡(默认eth0),二来显示的数据不太准确且不友好(sleep 1做差值).
2.nping3 居然可以用来模拟SYN FLOOD. (不要用来做坏事哦)
3.tcpdump 之前有所耳闻. 用的不多. 平常有解包需求,都是在windows下用wireshark,毕竟是图形界面.
作者:罗阿红 出处:http://www.cnblogs.com/luoahong/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
Linux性能优化实战学习笔记:第十讲==中断相关推荐
- Linux性能优化实战学习笔记:第四十六讲=====实战分析
Linux性能优化实战学习笔记:第四十六讲 一.上节回顾 不知不觉,我们已经学完了整个专栏的四大基础模块,即 CPU.内存.文件系统和磁盘 I/O.以及网络的性能分析和优化.相信你已经掌握了这些基础模 ...
- linux性能优化实战学习笔记-(1)CPU性能分析工具与套路
版权归Linux性能优化实战 作者倪鹏飞,本文主要是为学习.整理相关知识点,请勿用作商用,侵删. linux性能分析工具 下图来自:Brendan D. Gregg http://www.brenda ...
- 五十四、Linux性能优化实战学习笔记|套路篇:系统监控的综合思路
目录 指标监控 日志监控 小结 上一节,我带你学习了,如何使用 USE 法来监控系统的性能,先简单回顾一下. 系统监控的核心是资源的使用情况,这既包括 CPU.内存.磁盘.文件系统.网络等硬件资源,也 ...
- 三十五、Linux性能优化实战学习笔记-基础篇:C10K 和 C1000K 回顾
目录 C10K 怎么在32位系统的系统中支持并发 1 万的请求呢? 网络I/O 模型优化 I/O 多路复用的分类 select 或者 poll epoll 为什么Redis通常是选择使⽤epoll这种 ...
- 《Linux性能优化实战》笔记(四)—— CPU 使用率
一. 节拍率与CPU时间 前一篇说到,Linux 作为一个多任务操作系统,将每个 CPU 的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉. 为了维护 CPU ...
- 《Linux性能优化实战》笔记(十三)—— 如何“快准狠”找到系统内存的问题
一. 内存性能指标 为了分析内存的性能瓶颈,首先你要知道,怎样衡量内存的性能,也就是性能指标问题. 1. 系统内存使用情况:比如已用内存.剩余内存.共享内存.可用内存.cache和buffer的用量等 ...
- linux性能优化实战 倪朋飞,Linux性能优化实战:系统的swap变高(09)
一.实验环境 1.操作系统 root@openstack:~# lsb_release -a No LSB modules are available. Distributor ID:Ubuntu D ...
- 推荐学习-Linux性能优化实战
学习交流加(可免费帮忙下载CSDN资源): 个人微信: liu1126137994 学习交流资源分享qq群1(已满): 962535112 学习交流资源分享qq群2: 780902027 推荐一个学习 ...
- 学习Linux性能优化实战-1
文章目录 前言 平均负载 命令 进程调度 命令 相关文件 CPU使用率 perf 软中断 测试工具 前言 最近在极客时间上面发现了倪鹏飞老师的Linux性能优化实战,自己感觉讲得很好,有兴趣的朋友可以 ...
最新文章
- python 画图 内存-python来做专项测试-内存测试
- apriori算法代码_sklearn(九)apriori 关联规则算法,以及FP-growth 算法
- 知其所以然~redis的原子性
- 数学计算机电路基础,2019上“计算机电路基础”作业(五大题共16小题).docx
- rabbitmq direct 多个消费者_RabbitMQ从零开始
- (转载)图文推荐给开发人员非常实用的站点
- 【转】webkit webApp 开发技术要点总结
- WCF分布式安全开发实践(10):消息安全模式之自定义用户名密码:Message_UserNamePassword_WSHttpBinding...
- Stringutill.isEmpty()和stringutil.isBlank()
- udp java 检测连接_java创建udp连接 java udp怎样测试是否连接
- python毕业设计作品基于django框架 电影院购票选座系统毕设成品(5)任务书
- 使用python给微信推送信息(一)
- html万花筒相册旋转效果,jquery css3 3D万花筒图片相册展示特效
- sx1278组网-子设备
- 用Excel表格拆分一行里的内容
- 用excel打开一个xls文件进度到36%就不动了
- python3.7的IDEL怎么清屏
- USACO 2017 December Contest Platinum T3: Greedy Gift Takers
- pandas库随笔——更改Series与DataFrame的列标签
- 2014春节流水帐及杂想
热门文章
- 计算机软考铁路不认,软考高级工程师容易考吗
- matlab如果图片格式灰度矩阵,matlab矩阵生成灰度图
- 戒掉PC,免pc开发,cloud ide and debug设想
- CADSoftTools CADEditorX v15.0 Crack
- Gemini Blueprint参考文档 第9章 服务注册表
- 实验十一 .实验十二
- es修改IK分词器源码 mysql热词动态更新(报错解决x3)
- Libra错在哪? 终于有人说清楚了...
- 334个地级市名单_334个地级市的“基层”演出,李志说“如果我死了,得留下点什么”...
- 数学在计算机科学发展中起到的作用,浅谈数学在计算机科学及应用中的作用_计算机毕业论文...