服务器在 3000 个并发客户端时崩溃 - 如何正确配置? PHP 和 Apache

服务器在 3000 个并发客户端时崩溃 - 如何正确配置? PHP 和 Apache

我有 4 个 Web 服务器、2 个数据库服务器(读写)、Redis 和一个负载均衡器。我使用的是 PHP 7.0、Apache2 和 MySQL 5.7,但是当我对 3000 个同时上网的用户进行负载测试时,服务器会一个接一个地崩溃。

Apache 服务器非常强大,每个服务器都有 32GB 内存,遗憾的是所有服务器的内存使用量都达到了最大。

我们对代码做了很多修改,但是,我觉得不对劲,我的托管服务提供商无法帮助我进一步配置我的服务器,因为他们说这是他们能做的最好的事情,在这里我需要你的帮助 - 我们缺少什么?应该设置 PHP / Apache / MySQL 中的哪些配置?

我要澄清的是,该网站在有 300 个客户端的情况下运行良好,但随着越来越多的客户端访问,响应时间达到每个请求 50 秒,这真的很奇怪,为什么只有 400 个客户端就会让我的服务器响应如此缓慢?

我真的很绝望也很困惑,我们该看什么呢?

多谢。

答案1

去年夏天我们甚至有 6000 个请求。4 个带有负载均衡器的服务器如何处理这样的请求?

那么到底发生了什么变化?回答这个问题,几乎总是因为后端代码处理陷入困境,有时是因为 tcp 套接字耗尽之类的原因,有时只是 apache 和 php 之间的简单池/等限制。

请遵循以下步骤:

  1. 从堆栈中消除 PHP。仅为测试提供小型静态文件
  2. 观察结果并调整 apache/OS 以适应所需的连接
  3. 重新引入 PHP。服务器将无法匹配静态文件服务性能
  4. 分析您的 PHP 代码,识别并解决缓慢问题
  5. 最后:尽可能缓存所有 PHP 结果。

“如何得到不起眼的 php 应用程序满足X基准?" 是一个非常问题很广泛,但流程通常是,让前端静态服务满足您的要求,然后将后端代码添加到组合中。要么解决后端代码的缓慢问题,要么消除它。

一旦你开始达到数千同时用户..您将会遇到某些限制(文件系统速度、内存、CPU 速度、通信延迟、低效的 wordpress 代码和缓慢的数据库调用以及大量的 CPU 上下文切换),这些限制将会加剧并迅速导致服务质量呈指数级下降。

相关内容