cakephp - Controller :: invokeAction耗费大量时间

时间:2018-01-09 13:38:32

标签: cakephp newrelic

我正在开发cakephp 2.x.我在New Relic的事务跟踪摘要中发现,有一些API花了很多时间(差不多20-30秒)来执行,其中几乎90%的时间都花在了Controller :: invokeAction方法上

有人可以解释为什么在invokeAction方法上花了那么多时间。

1 个答案:

答案 0 :(得分:7)

我同意@ndm的说法,即Controller :: invokeAction()方法封装了Controller动作触发的所有内容。您的方法没有花费太多时间来执行,但是当它将结果数据发送到客户端时 - 完成卸载数据所花费的时间会记录到此方法中。在New Relic的说法中,这是 unustrumented time

New Relic的交易时间也包括这个网络时间,它将被记录到Controller :: invokeAction()方法中,因为New Relic找不到一些其他操作来应对未跟踪的时间。< / p>

根据新遗物文件 -

  

最常见的罪魁祸首是发送大块数据的函数   数据或大文件给用户。如果用户连接速度较慢,   发送小文件(例如小图像)可能需要很长时间   由于简单的网络延迟。由于没有内部或C扩展   函数已经过检测,PHP代理没有人责备&#34;责备&#34;该   花费的时间,这在事务跟踪中显示为   未经教育的时间。

您可以在此处详细了解https://docs.newrelic.com/docs/agents/php-agent/troubleshooting/uninstrumented-time-traces

如果您仍想弄清楚发生了什么,或者追踪您方法的未经检测的时间;您可以在New Relic的PHP代理中将newrelic.transaction_tracer.detail设置为0。这将确保最大可见度。

您可以在此处详细了解如何设置New Relic的PHP自定义检测:https://docs.newrelic.com/docs/agents/php-agent/features/php-custom-instrumentation