我有一个基于视频的网站。当大约 1000 个并发用户观看/下载视频时,网站就会变慢。
我正在尝试调试它以查看哪些资源较弱,以增加它。我执行htop
命令来查看资源使用情况,但当页面加载速度太慢时,服务器的 CPU 和 RAM 都超过 50% 可用(在这种情况下,一个简单的网页需要超过 40 秒才能加载)
这就是为什么我认为这可能是带宽问题。现在我想知道的是当客户端流式传输/下载视频文件时会发生什么?
请注意,我的所有内容都位于同一台服务器上(后端/前端/数据库/视频文件)
答案1
你的逻辑不正确。
如果 CPU 和 RAM 仍然良好,则可能存在两个限制问题。
- 带宽
- 输入输出
从服务器端检查这两项操作都非常简单。检查一下吧。
现在我想知道的是当客户端流式传输/下载视频文件时会发生什么?
取决于你所说的流式传输是什么意思,但本质上它从源抓取数据并将其转发到目标。这本质上是一个 CPU 非问题,开始时不会使用大量 CPU。除非你配置了足够的存储空间用于缓存(在 RAM 中)并因此被使用 - 数据来自存储,无论你有什么。一般来说,这是人们不了解和不关心的领域 - 通常是瓶颈。
在这种情况下,一个简单的网页需要超过 40 秒才能加载
这表明您达到了残酷的网络限制或 IO 限制。鉴于您根本不想谈论 IO,我敢打赌您的 IO 已经超载到可笑的程度。除非您运行 SSD 存储(通常在 RAID 配置中),否则您的 IO 预算对于高带宽网络来说低得可笑 - 足以用一个流饱和,而当您的 HDD 磁头必须移动时,这在很大程度上是不够的。