在 nginx 服务器上实现/最大化 1GBPS 连接

在 nginx 服务器上实现/最大化 1GBPS 连接

这一页 (http://www.remsys.com/nginx-on-1gbps) 声称它可以使用 JBOD 设置且不使用 raid 来最大化 1gbps 线路。目前我使用的是 1gbps 专用端口,并且使用的是 raid 10(4x2TB - 100tb.com 服务器附带的磁盘)。

目前我的峰值仅为 500-550mbps。wa% 每次都会显示 20% 左右。

我正在研究如何最大限度地利用这个 1gbps 端口,因为我有他们提供的不限流量服务。你们觉得我引用的页面比我当前的 raid 设置更好吗?你们对如何最大限度地提高此服务器的性能还有其他建议吗?谢谢。

答案1

如今,一块 2 TB 的磁盘就能填满千兆管道。这需要 125 MByte/秒,这正好是 7200 RPM 2 TB 磁盘的预期速度。

现在,假设您只通过链接发送一个大文件,并且文件中没有碎片。使用 RAID-10,您至少可以将单个磁盘的读取数据速率提高一倍,如果您使用的是不错的 RAID 控制器,则可以将其提高四倍。(使用 4 驱动器 RAID-10 时写入数据速率只会翻倍。)这为您提供了足够的额外磁盘 I/O 容量来处理少量碎片或少量并发访问。

如果您对磁盘阵列进行基准测试,您可能会发现随机读取的性能会下降一个数量级或更多。当出现碎片或开始同时发送过多文件时,就会发生这种情况。磁盘驱动器磁头在硬盘驱动器的扇区之间移动所花的时间比在原地读取数据所花的时间要多。

文章建议将数据拆分,并为每个磁盘分配一个自己的 nginx 实例,但这只有在您能够预测出一种在磁盘和 nginx 实例之间均匀分配工作负载的好方法时才有效。如果您的客户端下载需求不可预测,您最终可能会将所有读取集中在单个磁盘上,从而导致性能比 RAID 配置更差。

如果您绝对需要在不改变硬件配置的情况下获得更好的性能,并且基准系列读取性能仅为单个磁盘的 2 倍,那么您可以转向 RAID-0。当然,这样磁盘故障的风险会更大。

您链接的文章声称 nginx 在文件读取方面存在非常严重的 I/O 性能问题。也许这个问题已经修复了。如果没有,您可以使用多个 nginx 实例来缓解它。您不必像文章中建议的那样将它们绑定到单个磁盘。您可以设置一个代理来以循环方式分发请求。您需要仔细进行基准测试,以调整适合您特定工作负载的适当数量的 nginx 实例。对于所有情况,没有单一的“正确”答案。

您可能还会遇到与以下相关的问题TCP 慢启动或修复 HTTP 中的低效问题之一快闪记忆体。目前,你实际上无法解决这些问题。解决方案需要广泛部署实验技术,而由于网络效应,这意味着你需要数年甚至数十年的时间来推出。

如果问题仅仅是由于尝试同时服务过多用户或大文件过少,从而将磁盘推向随机文件访问端,远离串行 I/O 端,那么除了添加更多主轴外,您别无选择。这可能意味着采用 6+ 磁盘 RAID-10 配置、多台服务器或某种组合。

相关内容