100 个用户的服务器配置

100 个用户的服务器配置

我有一个问题,与以下场景(真实情况)中应该近似使用哪个服务器有关:

我有一台服务器,其中存储了一些视频,可以通过运行在该服务器上的 Web 应用程序访问。大约有 100 个(并发)用户将使用它(通常通过平板电脑或手机,但也包括 PC)。

您能给我一些关于构建此服务器硬件配置的想法吗?它上运行的操作系统将是 Linux。

提前致谢。


编辑我:

我使用的 Web 服务器是 Apache HTTP,但它很可能充当Java服务器的代理(当然安装在这台机器上)。

将在此服务器上运行的其他应用程序包括:

  • 身份验证申请
  • 行政管理申请。

该服务器也将持续运行(24/7)。

答案1

根据您的描述,该服务器的主要用途似乎是将视频流式传输到 100 个客户端。

鉴于此,服务器最重要的两个子系统将是:

  1. 网络连接
  2. 存储系统

要确定这些设备的性能,您需要知道需要多少带宽 - 这取决于您将提供的视频质量。假设视频为 1MB/s,对于 100 个用户,网络和存储系统都必须能够提供 100MB/s(网络为 800Mb/s)的数据。

如果网络带宽连接大于单个链路可以处理的范围,并且您无法提高链路速度(即从 1GbE 迁移到 10GbE/40GbE),那么您可以添加更多链路,并在第 2 层聚合它们,或者使用多个 IP 地址(每个链路一个)并通过应用程序分发连接。此外,您必须确保从服务器到客户端的数据路径可以处理容量,如果网络其他地方存在瓶颈,服务器提供 10Gbps 的速度是没有意义的!

对于存储系统,您需要确保它能够处理带宽和每秒 IOPS(每秒输入输出次数)数量以提供数据。根据我们上面的计算,您将需要 100MB/s 的流式读取,但由于您有 100 个用户,因此存储系统必须能够处理至少 100 IOPS。如果您希望用户浏览视频,则需要更多来保持性能。虽然硬盘在没有争用时可以提供良好的流式传输性能,但当并发访问数量增加时,我会考虑使用 SSD。

除了这些基本的性能特征之外,您还需要考虑网络连接和存储系统的可靠性。如果发生链路故障或硬盘故障,会发生什么?如果您想继续提供服务,您必须拥有多个链路和弹性存储配置(通过 RAID 或应用程序/文件系统级别的数据复制)。

存储系统的 RAM 将帮助您缓存视频并减轻存储系统的负担,因此如果您预计许多人会观看同一视频,那么更多的 RAM 通常会有所帮助。但如果工作集(通常访问的数据)的大小大于系统的 RAM 量,那么如果您没有看到很大的改进,请不要感到惊讶。

由于系统的大部分将通过 IO 传输数据,因此您可能不需要太多 CPU 能力,因此任何现代多核 CPU 都应该足够。不过,如果您在 NUMA 架构中有多个 CPU,则应注意不要使 CPU 互连过载。

一旦你有了硬件,你就应该对其进行基准测试,以确保它能够提供性能。对于存储系统,我建议菲奥工具,它允许您专门测试诸如使用 100 个并发读取器的流式读取之类的场景。

考虑到我上面所说的一切,您应该与您的首选供应商交谈,看看他们推荐什么配置。如果您将您的要求作为 RFP 的一部分(特别是如果您包括硬性要求,例如提供特定 IO 配置文件的能力),那么以后解决任何性能问题都会更容易。

在设计这些系统时,尝试思考数据如何在系统中移动,以及限制在哪里。

最后,确保您设计的系统具有充足的容量,以便您可以处理流量的增长和峰值。

答案2

根据并发用户数量提供准确的服务器配置很困难,因为它也取决于你的代码和数据库优化。基本上,你需要对你的应用程序和服务器进行基准测试,因此有许多开源工具可用于执行此操作,例如

您可以进行全面基准测试以及堆栈基准测试

类似的工具

  1. AB
  2. http_load
  3. 系统工作台
  4. unix基准

等等都是可用的。

答案3

您能给我一些关于构建此服务器硬件配置的想法吗?它上运行的操作系统将是 Linux。

是的。使用双倍尺寸。</irony>

不,从现阶段来看是不可能的。您可以选择 4core-4GB RAM 机器或 mot,这实际上取决于您要用它做什么。如果您只是从文件系统提供下载服务,那么小型机器就可以了,但是当涉及到 java 等时......基准!


为了更加具体,你自己也应该更加具体。

  • 什么网络服务器?
  • 该服务器仅供下载吗?
  • 是否有其他基于网络的软件,如 cms 等?
  • 完整的 LAMP 堆栈?
  • 需要 24/7 吗?

如果主要目的是传送视频并充当 java 应用程序的反向代理,我建议使用 nginx。它比 apache 轻量级得多,可以处理更多的并发连接,同时需要更少的系统资源。

对于您的下载部分,请尝试避免使用 web 应用程序并直接从反向代理提供文件;这将降低总体所需的性能。

请注意,nginx 有一些很好的模块可以作为视频的静态服务器


关于 24/7:你需要确保全天候运营?那么您将需要故障转移设置。

相关内容