gpt4 book ai didi

php - MySQL 和 PHP 很好,但 Web 服务很慢

转载 作者:行者123 更新时间:2023-11-29 18:22:01 25 4
gpt4 key购买 nike

所以我有一个 REST Web 服务,有很多用户(~50k)和很多在线用户,最近我遇到了一个问题并且无法修复它,网络服务变得非常慢!

当我与 postman 核实时,1 个请求需要 1-4 秒!我用消化慢日志检查了 MySQL,它工作正常(所有请求都在 100 毫秒或更短的时间内完成)我还检查了 PHP:

$time = microtime(TRUE);
$mem = memory_get_usage();
//code here
print_r(array(
'memory' => (memory_get_usage() - $mem) / (1024 * 1024),
'seconds' => microtime(TRUE) - $time
));

而且它真的很快,所以在我看来 PHP 和 DB 都很好,但整个 Web 服务变得非常慢!不知道如何识别和解决问题

注释:

6GB 内存(MySQL 占用了我设置的一半,另一半是 buff/catch)

6 核(MySQL 用户 ~100-150% = 1-1.5 核)

硬盘未满:)

CENTOS 7 - nginx - PLESK - php 7

最佳答案

每秒 500 个请求的持续负载并不是轻负载。如果这些请求没有或只有极少数超时,则您可能已经充分调整了 Web 服务器配置。为什么?当基于 Linux 的 Web 服务器发出 listen(2) 时request 它为传入请求设置了几个队列。这些请求会等待,直到服务器中的某些工作人员开始使用 accept(2)以便开始回应他们。

1.4 秒的响应时间可能主要花在其中一个监听队列上。

您可以尝试调整 nginx 以应对重负载。通过调整它接受的连接数量等内容,您也许可以从中获得更多性能。

您应该检查 Web 服务运行的代码,看看它是否包含任何不必要的内容。它是否从文件系统读取任何文件?您的目标是这样的:一旦您的 php 代码开始处理请求,它应该能够使用尽可能少的共享资源(MySQL 查询、文件读取等)来完成它。如果处理请求的 php 实例必须彼此等待很长时间,您的系统将会变慢。

您的 php-to-MySQL 连接方案是否使用连接池。确保你使用它。 mysqli_PDO 都提供连接池,但是您可以采取一些措施(即使是错误的)来击败连接池。

在这种情况下,许多人会通过添加更多 Web 服务器计算机来扩展服务器配置。您可以使用循环 DNS,也可以了解 nginx 的负载均衡功能。

关于php - MySQL 和 PHP 很好,但 Web 服务很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46497613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com