【问题标题】:Incresing API request concurrency using PHP使用 PHP 增加 API 请求并发
【发布时间】:2020-06-17 05:51:53
【问题描述】:

我开发了一个使用 PHP 来接受 api 请求的应用程序。我已经使用Apache Benchmark 来检查它每秒可以从另一个远程服务器处理的最大并发请求。我已经使用了最大 200 的并发,最大请求负载为 10,000。它可以处理的最佳请求是每秒 139 个请求。我想增加它。我该怎么做?

我的服务器配置是

Intel Xeon E3-1230v6 - 4 c / 8 t - 3.5 GHz / 3.9 GHz
RAM: 32GB
Storage: SSD 480GB x 2 (in RAID-1 soft raid)
Network bandwidth: 500Mbps

OS: Ubuntu 18
Server Management: Plesk Web Pro (Apache-Nginx)
PHP Version: 7.3
Database: MariaDB 10.1.44
Database max allowed concurrent connection: 2000
My server Ping Time from test server 200ms.

我的脚本最大处理时间是 0.04~0.06 秒。

我尝试过使用 NodeJS,有趣的是,它没有增加请求级别,而是将请求级别降低到每秒 15 个请求。

我使用过 Redis Cache(由 Docker 托管),但没有运气。等级同138~139。

我真的需要将它设置在 500~1000 之间。我怎样才能做到这一点?

我没有在操作系统级别上进行任何修改。全部设置为默认值。

提前感谢您阅读本文。

【问题讨论】:

  • 我现在可以试试
  • PHP 版本:7.3 我在服务器详情中提到过。我一测试就通知你更新。
  • 如果redis没有帮助,那么你的瓶颈很可能是apache/nginx。此外,您是要每秒处理 500-1000 个请求,还是要使每台服务器的性能达到每秒 500-1000 个?
  • @NicholasSummers 我只是在检查 PHP 版本,有趣的是我看到,我使用 FPM 和 Apache 运行我的服务器,而不是 nginx。我刚刚从 Apache 的 FPM 到 Nginx 的 FPM 进行了检查,对于 redis,请求级别达到 300+(310~312)。但是如果我使用Mysql,那么它不会改变。现在我只有一台服务器,所以我必须在这台服务器中获取它。我正在尝试每秒处理 500-1000 个请求。
  • @NicholasSummers 感谢您的友好经验分享。我是这么猜的。但我只是想确定像你这样的专家意见。如果有什么办法!现在,我不可能去云端并使用具有负载平衡的多个实例。我必须在这台专用服务器上使用至少 3 到 6 个月。

标签: php apache api ubuntu nginx


【解决方案1】:

PHP 是一种同步语言,它使用解释器来运行它的脚本。 到达 PHP CGI 的每个请求都将等待前一个请求完成。 PHP 使用 ProcessManagers (PHP-FPM/Apache mod_php) 来克服这个问题。尝试增加活跃员工的数量

【讨论】:

  • 如何在 PHP 中增加活跃工作者?有哪些设置?
  • 我做到了。我将pm 设置为static,将pm.max_children 设置为200。但没有变化。默认值为 pmondemandpm.max_children 到 10
  • @RazinAbid 您需要重新启动 php 服务,并且可能需要重新启动 apache 才能使更改生效。此外,在负载测试期间,使用通常激活的状态 url 监视 fpm 管理器,以了解活动进程的数量。如果它太低,您的架构中有另一个阻塞组件。
  • 首先,使用您当前的活动 fpm 池配置。其次,尝试使用 pm = static。其他人有一些启动新员工的开销。第三,不要让过多的工作人员使 CPU 过载。 ``` [p73] ... pm = static pm.max_children = 24 pm.max_requests = 1000 ... ``` 这将启动 24 个处于待处理状态的工作人员,每个工作人员最多可以处理 1000 个请求,然后重新启动。您可以在此答案中阅读更多内容:stackoverflow.com/a/31411779/7534084
猜你喜欢
  • 1970-01-01
  • 2019-02-12
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多