239144498 / Streaming-Media-Server-Pro

这是一个强大的IPTV源后端服务,具有视频缓冲区功能,程序内置了很多独家频道,不够?你还可以自定义添加电视源;超多功能接口,还可以添加你的代理,并且适合任意平台,非常适合作为家庭影院的IPTV服务!可玩性超高,更多详情点击查看。

Home Page:https://stream.naihe.cf/docs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

什么情况下会导致异常?

redrainl opened this issue · comments

我用docker部署在vps,最简化部署,没有装mysql、redis等,开始时一切运行正常。生成的播放列表我是共享在github上的,第2天偶然发现vps流量异常高,几个小时就跑了一百多G流量,开始以为是用我列表的人多而已,但是检查发现已无法正常使用,只要有一个播放连接请求进来,vps的incomg就把60M带宽占满了,docker stats显示该容器的内存占用也不停升高,网页端也没法播放。把容器删除重建,甚至把镜像文件也删除重拉,仍然是一样的现象,换一台其他的vps安装部署则正常。难道是触发了4GTV服务器端的限制?
docker stats

log

好像和前面qupaif反馈的issue13情况一样。

commented

说一下你的vps配置信息,channel和online接口采用代理转发,人一多用的流量肯定多;“只要有一个播放连接请求进来”你用哪个接口请求的?4GTV服务器端不会有任何限制,我这边每天上百个人使用没有任何问题。

我用docker部署在vps,最简化部署,没有装mysql、redis等,开始时一切运行正常。生成的播放列表我是共享在github上的,第2天偶然发现vps流量异常高,几个小时就跑了一百多G流量,开始以为是用我列表的人多而已,但是检查发现已无法正常使用,只要有一个播放连接请求进来,vps的incomg就把60M带宽占满了,docker stats显示该容器的内存占用也不停升高,网页端也没法播放。把容器删除重建,甚至把镜像文件也删除重拉,仍然是一样的现象,换一台其他的vps安装部署则正常。难道是触发了4GTV服务器端的限制? docker stats

log

你和我问题一样,我已经不再使用了 不知道哪里的问题 无解

commented

根据你的描述这可能是线程分配问题,解决方案:
图片

你可以尝试升级python至3.9版本,或者限制docker内存大小,参考文章:https://www.west.cn/docs/62540.html

原文具体详情请查阅
https://www.jianshu.com/p/e4595c48d091
tiangolo/fastapi#596

我vps是2 Cores | 1.5 GB,上述现象实在使用channel接口时发现,日志文件中看启动正常(数据库没装),对channel.m3u8的返回200,但channel2.m3u8在日志中未体现(正常应该有返回302),随后测试program.m3u能够正常反馈收到数据。
操作系统 centos 7.9.2009,docker版本 20.10.17,另一台运行正常的vps操作系统和docker版本一致。
docker内存限制了的话,现象就是接到channel接口请求后,内存撑满上限,退出运行。python版本升级是指升级宿主机的python吗?但问题是开始安装后是正常的,不知道为什么会异常。

2022-09-24 13:50:02.679 | INFO | app.settings::14 - 配置加载中...
2022-09-24 13:50:09.022 | INFO | app.settings::90 - 配置加载完成
2022-09-24 13:50:09.918 | INFO | app.modules.DBtools::13 - 检测redis连接
2022-09-24 13:50:09.918 | WARNING | app.modules.DBtools::28 - redis连接失败
2022-09-24 13:50:09.918 | WARNING | app.modules.DBtools:init:53 - 数据库连接失败
2022-09-24 13:50:10.697 | SUCCESS | app.utile:init:48 - init final
INFO: Started server process [1]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
INFO: 101.88.XXX.XXX:43412 - "GET /channel.m3u8?fid=4gtv-live021 HTTP/1.1" 200 OK
INFO: 101.88.XXX.XXX:43424 - "GET /program.m3u HTTP/1.1" 200 OK

重拉24日更新的docker镜像后,容器无法启动,启动日志如下:

2022-09-24 14:42:44.122 | INFO | app.settings::14 - 配置加载中...
2022-09-24 14:42:45.949 | INFO | app.settings::90 - 配置加载完成
Traceback (most recent call last):
File "/usr/local/bin/uvicorn", line 8, in
sys.exit(main())
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1130, in call
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/uvicorn/main.py", line 408, in main
run(
File "/usr/local/lib/python3.9/site-packages/uvicorn/main.py", line 576, in run
server.run()
File "/usr/local/lib/python3.9/site-packages/uvicorn/server.py", line 60, in run
return asyncio.run(self.serve(sockets=sockets))
File "/usr/local/lib/python3.9/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/usr/local/lib/python3.9/asyncio/base_events.py", line 647, in run_until_complete
return future.result()
File "/usr/local/lib/python3.9/site-packages/uvicorn/server.py", line 67, in serve
config.load()
File "/usr/local/lib/python3.9/site-packages/uvicorn/config.py", line 479, in load
self.loaded_app = import_from_string(self.app)
File "/usr/local/lib/python3.9/site-packages/uvicorn/importer.py", line 21, in import_from_string
module = importlib.import_module(module_str)
File "/usr/local/lib/python3.9/importlib/init.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1030, in _gcd_import
File "", line 1007, in _find_and_load
File "", line 986, in _find_and_load_unlocked
File "", line 680, in _load_unlocked
File "", line 850, in exec_module
File "", line 228, in _call_with_frames_removed
File "/code/./app/main.py", line 9, in
from app.routers import app
File "/code/./app/routers.py", line 199
async async def downlive(file_path: str, token1: str = None, expires1: int = None):
^
SyntaxError: invalid syntax

重拉最新镜像后,容器能运行了,但之前的问题还是依旧 :(

commented

重拉最新镜像后,容器能运行了,但之前的问题还是依旧 :(

我需要进一步确认信息,当程序启动后没有发生请求会出现高内存占用吗,还是启动后一段时间请求没问题,或者过了一天后没有发生请求会出现高内存占用,还是请求后会发生;以及高内存占用是持续的还是短暂出现?

程序启动后如果没有请求就没问题,一直没有请求的话运行也没问题,请求program.m3u也没问题,但一请求channel.m3u就有问题,内存占用会肉眼可见的不停持续增加,vps传入数据从有请求开始就一直跑带宽,但没有传出数据。

commented

channel.m3u8请求后内存占用是持续的还是过几秒就恢复?

是持续的,不设内存限制的话,能从初始的几十兆一直持续增加到1g多(感觉一分钟都没到吧),我vps一共才1.5G内存,测试时一看还没有停下来的意思,就手动把容器停了。

commented

这很反常;channel.m3u8接口用于生成m3u8文件,所需计算量很小。
你可以尝试不用docker,使用本地环境部署试试。

教程:https://www.cnblogs.com/1314h/p/16651157.html

试了不用docker,用本地环境部署。python不熟,折腾了好久,requirements里改了两个依赖的版本号,最后终于跑起来了,结果现象居然一样:( 请求program.m3u没问题,但一请求channel.m3u内存占用就开始一路狂飙。
requests==2.27.1
uvicorn==0.17.0
docker和本地环境部署都这样,感觉没道理啊,而且最初部署的时候使用是正常的啊

commented

试了不用docker,用本地环境部署。python不熟,折腾了好久,requirements里改了两个依赖的版本号,最后终于跑起来了,结果现象居然一样:( 请求program.m3u没问题,但一请求channel.m3u内存占用就开始一路狂飙。 requests==2.27.1 uvicorn==0.17.0 docker和本地环境部署都这样,感觉没道理啊,而且最初部署的时候使用是正常的啊

我经过多种不同配置环境都没有出现你说的高内存占用问题,而且其他人都没有反馈这种情况,最让我困惑的是,从之前你的描述中,图片显示内存占用684m,正常情况这在人数请求非常多情况才会达到,而网络流量这里就更诡异,上传流量540M,下载是6.2M,在最简部署中根本用不到上传流量,channel作为中转,channel2用于重定向转发,其他接口请求也花不了多少流量,你是否对程序进行过改动或者其他操作?

如前所述,我甚至已经把容器和镜像文件都删掉重新部署了,还是一样的现象,我也是觉得好奇怪啊,从开始的正常到出现问题,没超过2天,主机系统层面不记得有做过任何改动啊

如前所述,我甚至已经把容器和镜像文件都删掉重新部署了,还是一样的现象,我也是觉得好奇怪啊,从开始的正常到出现问题,没超过2天,主机系统层面不记得有做过任何改动啊

我也是类似问题,目前未解决 不知道怎么搞了 ,python用的是3.10