php - 生产分析代码

标签 php profiling xdebug xhprof

我正在考虑实现一些在生产服务器上分析代码的想法,并需要一些最佳实践建议。显然,分析所有请求是一个坏主意,因为会增加开销,所以我正在研究一些可以根据请求随机调用分析器的技术。大约每 10,000 个请求 1 个配置文件。

我知道有一种方法可以通过 Facebook 的 XHProf Profiler 来完成这样的任务但希望使用 xdebug 获得类似的解决方案。

所以我的问题是(假设 xdebug 是分析器):

  1. 这种功能值得推荐吗?我想从生产环境中获取一些真实世界的数据,但如果这意味着由于开销而破坏用户体验,我就不想要了。
  2. 在生产环境中安装 xdebug 是否会以任何方式向攻击者/开发者开放服务器(假设未启用调试器)?是否有适用于此类设置的样板配置?
  3. 针对适当的样本量触发分析器的最佳方式是什么?

任何其他对此问题的见解将不胜感激。

最佳答案

不要重新发明轮子。当涉及到在生产环境中分析代码时,XHProf Profiler 绝对是完成这项工作的最佳工具。

在 xdebug 中启用分析的选项仅限于通过 php.ini 文件或 .htaccess 文件通过 xdebug.profiler_enable = 1 始终打开分析,或者通过 选择性地打开分析xdebug.profiler_enable_trigger = 1。在后一种情况下,您必须设置一个 XDEBUG_PROFILE GET 或 POST 参数,或者发送一个名为 XDEBUG_PROFILE 的 cookie。这意味着如果有人想要恶作剧,他们可以通过简单地将 GET 参数附加到一堆请求来减慢您的服务器的速度。

我能看到的唯一可以分析相对随机的请求样本的选项是让 cron 脚本定期将 .htaccess 文件放置在适当的目录中,然后将其移出目录。尽管如此,这仍不尽如人意。

如果您决定使用 XHProf,请查看 XHGUI .

http://phpadvent.org/2010/profiling-with-xhgui-by-paul-reinheimer

关于php - 生产分析代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4370795/

相关文章:

在 GO 中进行分析 - 无符号

breakpoints - 'no breakpoints stop`最终在Eclipse PDT + Xdebug中解决了吗?

php - 使用 PHP 连接、授权和获取 Web 应用程序的数据

php - 未定义的属性:CI::$session

c# - .net 内存测量和分析

profiling - 有 Go 分析器吗?

在单独的进程中运行测试时,PHPUnit 无法生成代码覆盖率

php - XDebug PHP Eclipse - 错误没有找到合适的文件或没有选择文件

php - 遍历对象的属性并修改原始对象

php - 从数组查询获取对象 json 值时出错