srs
srs copied to clipboard
HLS:docker挂载目录,导致on_hls回调失败
发现一个有意思的bug,可以重现:
-
docker启动SRS,挂载本地目录到objs/nginx/html。
-
推3Mbps左右码流到SRS。
-
开启HLS,以及on_hls回调。
-
会导致回调失败。
尝试:
-
降低码率,用avatar那个没问题。
-
不挂载docker目录,没问题。
错误日志:
[2022-02-21 08:43:32.028][Warn][1][5l519ny1][62] ignore task failed code=1018 : callback on_hls http://mgmt.srs.local:2022/terraform/v1/hooks/srs/hls : http: post http://mgmt.srs.local:2022/terraform/v1/hooks/srs/hls with {"server_id":"vid-5p47519","action":"on_hls","client_id":"5l519ny1","ip":"172.17.0.1","vhost":"__defaultVhost__","app":"live","stream":"livestream","param":"?secret=ol93021","duration":10.78,"cwd":"/usr/local/srs","file":"./objs/nginx/html/live/livestream-3.ts","url":"live/livestream-3.ts","m3u8":"./objs/nginx/html/live/livestream.m3u8","m3u8_url":"live/livestream.m3u8","seq_no":3}, status=0, res= : http: client post : http: connect server : http: tcp connect http mgmt.srs.local:2022 to=30000ms, rto=30000ms : tcp: connect mgmt.srs.local:2022 to=30000ms : connect to mgmt.srs.local:2022
thread [1][5l519ny1]: call() [src/app/srs_app_hls.cpp:122][errno=62]
thread [1][5l519ny1]: on_hls() [src/app/srs_app_http_hooks.cpp:351][errno=62]
thread [1][5l519ny1]: do_post() [src/app/srs_app_http_hooks.cpp:505][errno=62]
thread [1][5l519ny1]: post() [src/protocol/srs_service_http_client.cpp:322][errno=62]
thread [1][5l519ny1]: connect() [src/protocol/srs_service_http_client.cpp:447][errno=62]
thread [1][5l519ny1]: connect() [src/protocol/srs_service_st.cpp:642][errno=62]
thread [1][5l519ny1]: srs_tcp_connect() [src/protocol/srs_service_st.cpp:193][errno=62]
mac下的docker,挂载目录后,这个目录的写入速度非常差,之前就发现过,比如在docker中编译都要慢非常的多。
看起来肯定是极端的龟速磁盘io,导致HTTP回调失败,这其中咋关联起来的,目前还没弄明白,需要看看。
PS: CentOS的docker没问题,只有mac的docker有问题,因为mac的docker挂载的volume,读写速度非常非常的慢。