PHP/FastCgi-使用 nginx 而不是 apache 的门槛是多少

PHP/FastCgi-使用 nginx 而不是 apache 的门槛是多少

我是一名 PHP 开发人员,我一直在 LAMP 环境中进行开发,到目前为止一切进展顺利。目前,我正在开发一个 PHP Web 应用程序,仍然在 Apache 上,没有使用任何框架。

PHP-fpm 将在前端提供动态和静态内容,而 php-cli 脚本将通过一些 cron-jobs(实际应用程序)在后端运行。

这次我面对的是并发问题,因为这个网站将被多个用户使用。预计至少在启动期间,并发登录用户数量为 50-75。

我几乎在所有地方都看到过 Nginx 在这种工作中比 Apache 更好;我读过很多解释它们之间差异的文章,也读过性能统计数据,但我从未在任何地方找到过应该从 Apache 切换到 Nginx 的实际阈值(并发用户数)。

我之所以想知道这一点,是因为正如我上面所说,我一直使用 Apache,而更换 Web 服务器是一个重大的选择,尤其是考虑到我必须花时间阅读 Nginx 文档才能完全理解其行为/功能。事实上,我曾尝试设置 LEMP 服务器,但目前 Nginx 对我来说听起来像阿拉伯语。

经过这个“简短”的介绍后,我的问题如下:

  1. 建议切换到 Nginx 的阈值(用户数)是多少?
  2. 假设我的网站同时在线用户数永远不会超过 300 人,我是否真的需要花费数周时间研究 Nginx,即使它在提供内容方面速度稍快一些?
  3. Apache/PHP-fpm 和 Nginx/PHP-fpm 在安全性方面有显著差异吗?
  4. 最后但并非最不重要的一点:我刚刚从 OVH 切换到 Digital Ocean。Digital Ocean 看起来很棒。他们为您提供了 LEMP 服务器的预构建映像。我能在多大程度上依赖 Digital Ocean 的 Nginx 安全设置?我问这个问题只是因为我搜索了很多针对 Nginx 的强化技巧,而且大多数技巧都已执行构建 Nginx 本身。有谁使用过 Digital Ocean 的 LEMP 服务器,可以帮我吗?

注意:我认为这些信息对于回复很重要:生产服务器(启动时)将是:4c/8t intel - 8gb RAM - SSD 硬盘

非常感谢。

答案1

首先,50-75 个并发用户不算什么 - 任何一个 Web 服务器都可以在默认、完全未优化的配置下处理这个数量,而且您真的不必担心,除非您在该数字末尾添加一个(或两个)零。
如果您在该级别遇到性能问题,则问题可能出在其他地方(数据库、应用程序代码)。


话虽如此,但并没有神奇的“阈值”来考虑进行架构变更——事实上,没有理由曾经如果不想切换,请切换:如果您熟悉 Apache,那么您可能希望继续使用它以简化管理,并通过添加更多服务器来分配工作负载来解决您的负载问题。

如果您希望优化性能,则应根据性能做出决定。尽可能优化您的服务器(Apache 2.2 请参见此处或者Apache 2.4 版本, 或者此处为 nginx), 进而进行负载测试来确定每种设计将给您带来什么样的性能。

如果基准数字接近,那么您使用哪个 Web 服务器并不重要,因为瓶颈在于您的设计的其他部分(并且您的测试应该向您显示瓶颈在哪里,以便您可以在系统的特定部分上工作)。

如果数字相差很大,你可以使用更快的 Web 服务器来避免添加更多硬件,但至少一些你需要添加更多的机器来处理高并发性——这只是网络的方式。


最后记住每次你过早优化 Knuth 都会杀死一只小猫他谈论的是编程中的过早优化,但这对于系统管理和基础设施设计来说也是不言而喻的:如果你不需要为了在发布时立即最大化性能,部署您所了解的(以及您已经测试过的)内容,然后在以后逐步提高性能。

相关内容