在具有两个硬盘的服务器上运行 Web 应用程序,哪种方法最好?

在具有两个硬盘的服务器上运行 Web 应用程序,哪种方法最好?

我有一台专用服务器(运行 Windows 2008 标准版),配有两个硬盘。我有一个 Web 应用程序(用 ASP.NET 编写)应该在此服务器上运行,该 Web 应用程序使用 MySQL,它也应该在同一台服务器上运行。此外,用户照片将与应用程序文件夹位于同一文件夹中。大多数访问将针对 MySQL 和用户照片。

那么,最好将第二个驱动器用于应用程序和 MySQL 数据文件,以便我将第一个驱动器留给操作系统

或者

将第一个驱动器(也包含操作系统文件)用于 Web 应用程序,将第二个驱动器用于 MySQL,这样就可以缩短访问时间。

哪种方法可以产生更好的性能?

非常感谢

答案1

除非您的 RAM 量很少,或者应用程序的 Web 服务器托管部分占用大量内存(或者您预计会有许多并发连接,因此小型 Web 服务器进程会成倍增加),否则该安排中唯一会产生显著 I/O 负载的就是数据库。

为其提供自己的驱动器可能会稍微提高整体配置的性能,但您也可以考虑使用这两个驱动器作为 RAID1 阵列来提高容错能力并因此提高可用性(但这并不能消除备份的需要)。

如果你使用两个独立的驱动器,那么有几件事可以提高数据库服务器的性能:

  1. 如果您定期备份(如果您不这样做,那为什么不呢?!),请备份到数据库不在的驱动器上。这将加快备份过程并最大限度地减少它对正在运行的应用程序的性能影响
  2. 如果 mysql 允许你像 MSSQL 和其他数据库一样将事务日志与数据文件分开,那么如果你的数据库有很多写入操作,那么将日志和数据放在不同的驱动器上可以大大提高性能

答案2

我建议您采用以下经过验证的配置:

  • 一个分区用于操作系统
  • 第二个分区用于数据库、应用程序、用户图像等。

原因如下:

  • 你的操作系统可能会崩溃,但你的数据理论上可以免受任何操作系统灾难的影响。
  • 您可以根据需要按照单独的计划备份每个分区。
  • 你的恢复一个分区的时间比把所有鸡蛋放在一个磁盘/分区上要快。
  • 如果单个磁盘发生故障,则不会出现停机时间。

数据库访问不一定会更高效,但其核心是 2 个磁盘之间经典的性能与可靠性权衡。

不清楚您的磁盘是否具有相同的容量。考虑 RAID 1 配置,其中磁盘使用这 2 个分区进行分区。

对于其他绩效衡量指标:

  • 考虑 ASP.NET 和 IIS 内核模式缓存策略

答案3

对于这种类型的问题,总是存在争论,即哪种方式是首选,但我的建议是将应用程序和 MySQL 移动到第二个硬盘驱动器。

答案4

由于硬件 RAID 控制器的成本对于该项目来说太高,我认为可以合理地猜测它不是任务关键型的。在这种情况下,服务器上的负载可能不会高到足以证明对性能的痴迷是合理的。

您预计每天的页面点击量是多少?您实际测量过性能特征吗?优化的黄金法则是“先测量,再执行”。

在担心性能问题之前,我会将您的第二个驱动器用作 RAID-1 镜像。

相关内容