写在前面:水平有限,错误和不足辛苦指出~~
性能排查对我来说一直是个比较困难的问题,本文记录一下在压测过程中软中断过高的问题。文章分两部分,第一部分是中断的基础知识,第二部分是记录一下本次的排查过程
中断是一种异步的事件处理机制,可以提高系统的并发能力。在计算机系统中,中断用来处理硬件设备的请求,当收到来自硬件的中断请求时,计算机会打断正在处理的进程来处理相应中断请求
由于中断请求是一个优先级非常高的请求,并会打断正在进行的进程,因此,要求中断处理程序快速高效的执行。为了满足这个要求,计算机把中断分成了两个阶段,分别为:上半部分和下半部分
硬中断和软中断的其他区别包括:
在计算机中,通过/proc/softirqs查看软中断的运行情况,通过/proc/interrupts查看硬中断,通过cat /proc/softirqs可以看到运行的软中断类型有:
在一次压测过程中通top命令看到si的值不为0,打算查看一下主要的软中断类型,确定是否符合预期
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】
1) 通过watch -d cat /proc/softirqs查看软中断的变化率,可以看到变化率最大的为TIMER、NET_RX、SCHED和RCU这几类的中断,了解到TIMER、SCHED和RCU是保证调度、时钟等正常工作所需要的,频繁变动是正常现象,那么就重点看一下NET_RX,该中断是网络发送的中断,因此,看一下网络的发送情况
2) 通过sar -n DEV 1,查看网络情况,可以看出网络发送的数量大,而接受的少,大概率是代码中大量的调用其他服务,接下来排查代码
3、排查代码得出结论,通过对代码的排查,发现调用中间件过多,解决办法是减少和中间件的交换,把需要的数据存到内存,以空间换时间
性能排查是一项比较难的工作了,但还是要不断的学习积累,念念不忘,必有回响。这次的排查其实也比较基础,没有遇到很难的问题,本片算是一个简单的记录吧。
各位朋友如果有关性能测试的任何问题,欢迎文章后留言,谢谢。