最近在一次高并发测试中发现av_interleaved_write_frame经常返回 broken pipe / EOF /unknown errro 这种问题。
运行的成功数是正常的一半,而且基本稳定在那个数值。跟阿里云也沟通过了,反馈是阿里云直播10秒没有拿到数据就主动关闭,这些都是客户端引起的问题导致服务端主动关闭的。像broken pipe,就是某端已经关闭这个链路,然后你再去往这个链路里送东西就会报这个错。
但这个程序在别的电脑上运行没问题,而且推到本地直播服务器也没问题啊。
后来我就把每帧av_interleaved_write_frame的前后时间差打印出来,发现在报错的时间点之前,都有好好的在发送数据,奇怪了。
后来多次测试和经验判断还是推断为网络原因,可能是因为网络带宽不足导致的你发数据成功,但对方收不到数据。换了带宽后的确验证了是网络带宽不足的问题,bug完美解决了,我真是个天才!