关于redis-queue同时消费多个任务,目前发现向队列里面推送ffmpeg转码任务,不能及时消费。
我有两个丁订阅者,user1和user2,我分别推两个ffmpeg转码任务(转码比较慢,大概1小时能完成),结果我推给user1收到了,但是user2没有反应。
我怀疑是只能等待user1处理结束吧。能不能配置成多个同时处理,一个堵塞了就另外一个也能处理。
是workerman
用exec在subscribe里面执行命令如:
ffmpeg -re -rtsp_transport tcp -i rtsp://sunba.tpddns.cn:554/openUrl/u5lcVOM?beginTime=20250215T140049&endTime=20250215T150145&playBackMode=1 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f mp4 -s 1280x720 -q 10 -progress /www/wwwroot/badminton/public/orderVideoTmp/test_202502181907181152028118_20250218070719_progress.log /www/wwwroot/badminton/public/orderVideoTmp/test_202502181907181152028118_20250218070719.mp4
versions : * v4.1.17
多个进程是可以同时消费的。排查下服务器 CPU 是否满载,或是否存在锁冲突。
ffmpeg不走显卡就是纯CPU编码,是CPU密集不是IO密集,核心是会跑满载,另一个没跑很正常,同时转两个你分两个机器跑吧,
另外视频转码任务,走CPU的话,串行处理的效率高于并行处理,因为会省去任务上下文切换的时间,要加快速度就是纯堆硬件了
你贴下你2个消费者的代码,先排除是不是你说的情况。正常的是可以同时消费,还有消费者进程数的问题