PHPAPI:两个环境中的相同代码,在同一台服务器上,速度不同

PHPAPI:两个环境中的相同代码,在同一台服务器上,速度不同,php,Php,希望标题不要太混乱 我有一个运行完全相同的PHPAPI代码的测试和生产环境。两个“环境”运行在同一个VM上 通过live.myapi.com访问PROD,通过TEST.myapi.com进行测试。这两个域都指向同一IP,对这两个域的所有请求都是通过SSL发出的。(对其中任何一个问题都表示怀疑,但无论如何都是如此) 如果我在这两种情况下都在搜索端点上运行测试,那么执行时间会有巨大差异 生产1.5s至5.8s 测试0.07s至0.2s PROD比TEST慢10倍多,即使它们是相同的代码并且运行在相同

希望标题不要太混乱

我有一个运行完全相同的PHPAPI代码的测试和生产环境。两个“环境”运行在同一个VM上

通过live.myapi.com访问PROD,通过TEST.myapi.com进行测试。这两个域都指向同一IP,对这两个域的所有请求都是通过SSL发出的。(对其中任何一个问题都表示怀疑,但无论如何都是如此)

如果我在这两种情况下都在搜索端点上运行测试,那么执行时间会有巨大差异

生产1.5s至5.8s 测试0.07s至0.2s

PROD比TEST慢10倍多,即使它们是相同的代码并且运行在相同的VM上

API与AWS(Aurora)中的远程数据库联系,这两个API之间的唯一区别是它们分别与PROD和测试数据库通信。数据库也运行在同一台服务器上,因此它们之间的硬件也没有区别

我将PROD中的搜索对象更改为指向测试数据库,但仍然得到相同的时间

然后我将测试中的搜索对象改为指向PROD数据库,它仍然非常快

我还确保他们在搜索这两个环境时得到相同的记录,但更改了测试中一列的值,因此很明显我所做的更改实际生效。他们肯定是

所以我想我已经排除了数据库的问题,但我想不出还有什么会导致这些荒谬的速度差异

我希望你们中的一些人能对我能找到的其他东西有一些想法,来确定为什么PROD会运行得这么慢


提前感谢您的帮助和阅读。

因此,结果表明,差异与数据库有关

我的搜索API中的一个嵌套类调用了一个函数,以消除旧的访问日志

在测试中,这并没有花费时间,因为它并没有得到很多流量。但是在PROD中,它需要更长的时间,并且根据流量的不同而有所不同(我们有很多网站使用相同的API,所以流量很大)

我从搜索堆栈中删除了老化函数调用,并将其作为一个单独的端点,然后将其连接到cron

我低估了网站在编码之前获得的流量


谢谢大家的建议

我认为你应该试着分析你的代码。将脚本拆分为一组检查点,并测量相邻检查点之间的时间间隔,这样您就可以看到问题所在的位置。您是否对每个步骤进行了速度测试,以找到问题所在?只是为了好玩,DB表的索引方式是否有助于查询?DBs有相似的尺寸吗?(我知道你说你把测试指向了产品数据,但肯定会有回报)谢谢你的回复!我将在搜索对象中添加检查点并报告,可能需要一些时间。至于DB表,它们的索引都是相同的,并且都是适当的(不搜索任何未索引的字段),它们的大小也是相似的(这里和那里可能相差几k)。最大的区别是一个api执行时间日志表,它在PROD中非常庞大,但我首先截断了它,它没有任何影响。