识别瓶颈

识别瓶颈

因此,我在云服务器上安装了 nginx 和 php-fpm。使用 apache 基准测试并进行以下设置:

ab -n 300 -c 5 http://example.com/

因此,云服务器(来自 rackspace)是 256mb。我在 apache 基准测试运行时运行了 htop,以便能够查看服务器资源。

所有四个处理器(我是否只拥有机架空间上四个单独处理器的一部分?我不确定我可以使用多少)在 Apache 基准测试运行的整个时间内都处于 100%(或 98% 或更高的水平)。

目前我每秒收到 15 个请求。我的第一个想法是调整服务器大小(我将其更改为 512mb,因此它应该有两倍的容量。)。尽管如此,每秒的请求数完全相同,处理器使用率始终处于/接近 100%。

然后我尝试将 php-fpm 改为静态 20 个进程(而不是 10 个)。结果与之前相同。

瓶颈可能是什么?

这个特定页面上的我的通用应用程序(用 php 编写)只是连接到数据库并获取产品列表。然后它只是将它们列在表中。没有太多复杂的查询(尽管有很多)

所以也许它与数据库有关?

答案1

最好的方法是安装一个代码分析器,例如调试。安装 XDebug,然后启用分析器。它将生成一份您可以快速检查的报告,并准确找出代码中哪些部分占用了最多的处理时间和内存使用量。然后,您可以精确地找出代码中的这些区域以进行优化。

答案2

您能否提供一些有关 PHP 代码实际执行的操作的更多信息?

答案3

您可以运行“top”并查看哪些进程(nginx、php-fpm 或 mysql)实际上占用了 CPU。这将表明瓶颈所在。为了更容易解释结果,请将 php-fpm 进程数暂时设置为 4。例如,如果您得到 4 个 php-fpm 进程,每个进程占用 90% 的 CPU,nginx 占用 5%,mysql 占用 20%,则 PHP 脚本中的一些繁重的数学运算就是瓶颈所在。如果 php-fpm 进程大部分处于空闲状态,而 mysql 占用大量 CPU,则数据库就是瓶颈所在,请考虑添加一个或两个索引。

相关内容