系统的软中断CPU使用率升高,该怎么办?

本文通过实例分析了Linux系统中软中断CPU使用率升高的问题,探讨了中断处理机制,尤其是软中断上下半部的概念。通过使用sar、tcpdump等工具,发现并确认了由SYNFLOOD攻击导致的网络接收小包问题,从而影响了系统性能。解决方案包括监控网络流量,优化网络配置,防止恶意攻击。

本文是通过学习倪朋飞老师的《Linux性能优化实战》 :系统的软中断CPU使用率升高,我该怎么办?

前言

中断是一种异步的事件处理机制,用来提高系统的并发处理能力。中断事件发生,会触发执行中断处理程序,而中断处理程序被分为上半部和下半部这两个部分。

  1. 上半部对应硬中断,用来快速处理中断
  2. 下半部对应软中断,用来异步处理上半部未完成的工作

Linux 中的软中断包括网络收发、定时、调度、RCU 锁等各种类型,我们可以查看 proc 文件系统中的 /proc/softirqs ,观察软中断的运行情况。

在 Linux 中,每个 CPU 都对应一个软中断内核线程,名字是 ksoftirqd/CPU 编号。当软 中断事件的频率过高时,内核线程也会因为 CPU 使用率过高而导致软中断处理不及时,进 而引发网络收发延迟、调度缓慢等性能问题。

软中断 CPU 使用率过高也是一种最常见的性能问题。下面我们就用最常见的反向代理服务器 Nginx 的案例,来学会分析这种情况。

案例

预先安装 docker、sysstat、sar 、hping3、tcpdump 等工具。

  • sar 是一个系统活动报告工具,既可以实时查看系统的当前活动,又可以配置保存和报 告历史统计数据。
  • hping3 是一个可以构造 TCP/IP 协议数据包的工具,可以对系统进行安全审计、防火墙 测试等。
  • tcpdump 是一个常用的网络抓包工具,常用来分析各种网络问题。

本次案例用到两台机器,用一张图来表示它们的关系。
在这里插入图片描述
可以看到,其中一台虚拟机运行 Nginx ,用来模拟待分析的 Web 服务器;而另一台当 作 Web 服务器的客户端,用来给 Nginx 增加压力请求。使用两台虚拟机的目的,是为了 相互隔离,避免“交叉感染”。

接下来,我们打开两个终端,分别 SSH 登录到两台机器上,并安装上面提到的这些工具。

操作和分析

在客户端机,使用 curl 访问 Nginx 监听的端口,确认 Nginx 正常启动。

# curl http://192.91.16.101
<!DOCTYPE html>
<html>
<head>
<title>Nginx</title>
<meta charset="utf-8">
<meta name="author" content="Licess">
</head>
<body>
<div id="main">
<div align="center"><b欢迎访问nginx</b></div>

</div>
</body>
</html>

接着,还是在第客户端机,我们运行 hping3 命令,来模拟 Nginx 的客户端请求:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值