Nginx开启了Hls后top后发现wa的使用,使用iotop发现nginx一直在写io,导致了wa的高,从而导致了cpu一直在等待io。更坑的是多路的情况下才出现这个问题,一直以为自己的程序cpu处理不过来导致的。最后不断优化,还是出现这个问题。还是使用top发现了wa一直高,而正是wa的高导致了 load average一直居高不下。使用iostat可以直观看到io的瓶颈问题,最后就是靠lsof再加上占用程序的id才发现原来是hls导致的,最后将hls关闭就可以了。
后续说明,原来nginx那边的如果遇到io阻塞就会将整个进程阻塞掉,从而导致了如果频繁写Hls会让直播一卡一卡,因此建议将HLs关闭,将Hls的功能移植到自己程序中。这样直播就不会被卡,但这里要说一下题外。我这边的固态是32g,20路视频hls缓存2小时,一开始我的程序正常,但越到后面,内存越飞涨,一开始以为是哪里内存泄漏了。但我只是修改很小的部分,也幸好这是很小的部分,但也耗费我2天的时间排查。最后才发现根源是那32g的固态上。根本不够用,这里不得不吐槽一下。因为硬盘写不下而导致程序内存一直飞涨。