![适用于高负载 Web 应用程序的 Linux 发行版](https://linux22.com/image/567042/%E9%80%82%E7%94%A8%E4%BA%8E%E9%AB%98%E8%B4%9F%E8%BD%BD%20Web%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%20Linux%20%E5%8F%91%E8%A1%8C%E7%89%88%20.png)
我正在编写一个 Web 应用程序,该应用程序应使用 Apache 和 MySQL 处理每秒 1000 个请求。我的服务器上安装了 Ubuntu。如果我安装 FreeBSD 而不是 Ubuntu,我的应用程序会更快吗?
谢谢。
答案1
各种 *nix 发行版之间的速度差异很小。我建议您使用 nginx 而不是 Apache。这可能真的能帮到您 :)
答案2
在优化性能时,操作系统或 Linux 版本的选择最不重要。
在硬件方面,如果服务器有足够的 RAM(例如 8 或 16 GB),您的工作负载可能就很满意。当然,网络连接也应该很快。
首先,确保您的 Apache、PHP 和 MySQL 至少具有半合理的设置,以保护您的安全。这些是什么?从您两行半长的问题来看,很难说清楚,因为有关于这个主题的书籍。实际上,上述每个软件都有一本单独的书。此外,除非您有特殊原因要使用 Apache,否则请考虑用 lighttpd 或 nginx 替换 Apache。
然后确保您的应用程序没有典型的致命错误,例如缺乏缓存、非最佳或不必要的 SQL 查询、每次加载页面时从第三方服务器获取某些资源、每次加载页面时一遍又一遍地从原始图片中渲染某些缩略图、缺乏 SQL 索引等等。
当您确信所有设置都正确时,请使用 Apache Benchmark、JMeter、Siege 或大量其他可用工具对您的服务器进行基准测试。看看您的服务器是否可以处理负载。如果不能,请重新开始并找出原因。
最后,说到操作系统,重要的不是操作系统是什么(至少在考虑 *BSD/Linux 时),而是它是如何调整的。请谨慎选择适合您使用的文件系统;例如,如果您有大量小文件,ext4 可能不是 Linux 中的最佳选择。另一方面,典型发行版中的默认内核设置适用于大多数工作负载,但在更奇特的环境中,可能需要调整 I/O 提升器、共享内存设置或网络参数等。如果您真的需要进入这个阶段,那就祝贺自己拥有了一项受欢迎的服务,并/或开始考虑购买更多服务器。
答案3
只要你的操作系统是基于 Linux/Unix 的,那就没问题。只是操作系统应该经过适当和非常仔细的调整。真正的问题是 Apache 和 MySQL 的性能调整。你肯定需要一个负载平衡器来处理每秒 1000 个请求。或者另一方面,你可以使用具有巨大内存和 CPU 的非常重的硬件来在同一台机器上容纳所有内容。你应该关注的事情是 - 仔细平衡负载 - Apache 的性能调整 - MySQL 的性能调整(以及 MySQL 与 Apache 服务器的分离)
答案4
您还可以使用 ArchLinux,它是 Linux 发行版中最基本的版本。
正如其他人已经回答的那样,不同发行版之间的速度差异通常并不明显;重要的是您的配置和正在运行的进程数量。话虽如此,Arch 是一个不错的选择,因为您可以完全控制一切;您可以确保没有其他东西会在您不知情的情况下减慢您的服务器速度。
除了分布之外,您还需要分析应用程序流。Apache 占用空间很大,无法像某些单线程同类程序(例如 nginx、lighttpd)那样处理那么多同时连接,但它是许多应用程序的唯一好选择。如果您的页面缓存良好、使用字节码优化并且查询时间短,那么它没有理由无法处理 1000 个并发连接。
但是如果您正在进行任何类型的非平凡处理,您将需要开始考虑更高效的 Web 服务器,或者在负载平衡设置中将 2 个或更多 Apache 服务器集群在一起。