录制报错,IO跑满
最近几天使用了V4.4.14版本的集成包录制,以前的旧版本稳定性基本没问题,但是最近突然频繁出现服务器宕机,查看了一下监控,磁盘IO突然跑满,并且日志报错 i/o timeout :

正常情况下,磁盘IO很低,最近版本偶尔突然会出现IO持续跑满,导致服务器无法连接,API接口超时无响应,只能强制重启服务器才会恢复,相关日志如下: ` 11:03:15 [31mERROR[0m pull {"plugin": "HDL", "url": "http://xxxx.flv", "error": "read tcp 170.31.103.114:59754->60.221.209.176:80: use of closed network connection"}
11:17:55 [31mERROR[0m pull {"plugin": "HDL", "url": "xxx.flv", "error": "EOF"}
11:36:35 [31mERROR[0m pull {"plugin": "HDL", "url": "xxx.flv", "error": "read tcp 170.31.103.114:38960->1.1.124.161:80: read: connection reset by peer"}
11:36:37 [31mERROR[0m pull {"plugin": "HDL", "url": "http://xxx.flv", "error": "read tcp 170.31.103.114:44296->1.1.193.214:80: read: connection reset by peer"}
11:40:35 [31mERROR[0m pull connect {"plugin": "HDL", "url": "xxx.flv", "error": "Get "http:/xxx.flv": dial tcp: lookup pull-l.xxx.com: i/o timeout"}
//从这里往后就开始出故障了
11:40:34 [33mWARN[0m track timeout {"stream": "1/37-20230314095641", "name": "h264", "lastWriteTime": "11:36:37", "timeout": "10s"} 11:40:37 [34mINFO[0m 🟢[33m->[0m⌛ {"stream": "1/37-20230314095641", "action": "publish lost"} 11:40:37 [33mWARN[0m track timeout {"stream": "1/43-20230314111111", "name": "aac", "lastWriteTime": "11:36:35", "timeout": "10s"} 11:40:37 [34mINFO[0m 🟢[33m->[0m⌛ {"stream": "1/43-20230314111111", "action": "publish lost"} 11:40:37 [34mINFO[0m ⌛[33m->[0m🔴 {"stream": "1/37-20230314095641", "action": "timeout"}
11:40:37 [31mERROR[0m pull connect {"plugin": "HDL", "url": "http://xxx.flv", "error": "Get "http://xxx.flv": dial tcp: lookup pull-l.xxxxx.com: i/o timeout"} 11:40:37 [34mINFO[0m 🟢[33m->[0m⌛ {"stream": "1/39-20230314110933", "action": "publish lost"} 11:40:35 [34mINFO[0m pull {"plugin": "HDL", "path": "1/38-20230314113830", "url": "http://xxx.flv"} 11:40:37 [34mINFO[0m ⌛[33m->[0m🔴 {"stream": "1/43-20230314111111", "action": "timeout"}
//再往后就没有日志记录了,磁盘IO就降不下来了 `
升级到4.4.16
更新之后,刚才又出现了这样的情况
配置文件让我看看
global:
loglevel: info # 日志级别,可选值:debug,info,warn,error,panic,fatal
http:
# 网关地址,用于访问API
listenaddr: :8186
# 用户名和密码,用于API访问时的基本身份认证
username: "test"
password: "123456"
hook:
urllist:
"*": "http://live.xxx.com"
record:
flv:
autorecord: true
fragment: 18000s
其他配置项均为默认配置,只手动修改了上述配置,每次故障前后的m7s日志上面已经贴出,刚刚看到新版本在m7s根目录下还有一个 fatal.log的日志,内容如下:
--------------------------------
--------------------------------
--------------------------------
2023/03/15 04:30:29 http: URL query contains semicolon, which is no longer a supported separator; parts of the query may be stripped when parsed; see golang.org/issue/25192
你的流是从哪儿来的呢
网上搜集的一些源, 那我再尝试换其他的源观察观察
我看你的日志是从远端拉的flv流再录制到本地是吗?
我看你的日志是从远端拉的flv流再录制到本地是吗?
是的,都是远程拉的FLV,录制到本地记录