perl - 使用 NYTProf 对 foswiki 进行分析会导致分析数据不完整

标签 perl foswiki devel-nytprof


我有一个非常慢的 foswiki 安装(对于未缓存的页面大约需要 60 秒)。根据 http://foswiki.org/Support/NYTProfDebugging,我尝试使用 NYTProf 分析安装使用以下命令:

> sudo -u www-data NYTPROF="file=/tmp/nytprof.out:addpid=1:endatexit=1" perl -wTd:NYTProf view -topic Some.Topic -username MyUsername

当我使用探查器运行脚本时,脚本失败并返回退出代码 141。如果我在没有分析器(远程 d:NYTProf)的情况下运行它,它会成功退出并产生输出。

分析后,我在/tmp 目录中得到了一堆配置文件:

nytprof.out.[841-1860]

但是当我尝试合并这些文件时,第一个文件出现错误:

> nytprofmerge nytprof.out.*
Profile data incomplete, inflate error -5 ((null)) at end of input file, perhaps the process didn't exit cleanly or the file has been truncated  (refer to TROUBLESHOOTING in the documentation)

我可以在没有第一个文件的情况下合并文件,但结果毫无用处,只显示了对 Foswiki::Sandbox::CORE:open 的 87 次调用,仅此而已。

我有机会获得有效的分析结果吗?或者在这种情况下我可以使用其他工具吗?

最佳答案

我不确定为什么你不能让 NYTProfiler 工作,我们已经用它来解决 Foswiki 2.0.2 中的一些性能问题,这些问题已在 Foswiki 2.0.3 中部分解决。有几个问题正在发生,但一个主要原因是我们在内部转换为 UNICODE,以及 5.20 之前的 perl 版本中的一些 Perl regex 问题。 https://rt.perl.org/Public/Bug/Display.html?id=66852

Foswiki 2.0.3 进行了以下性能更新:

  • 将一些频繁调用的内部函数从正则表达式更改为 index()
  • 更改了 EditRowPlugin 以生成更少的 html,需要在呈现模块中通过正则表达式进行处理。
  • 进行了一些其他改进以减少对主题的过度重读。

如果 2.0.3 没有显着帮助,请检查问题页面中是否有大表。如果是这样,您可以尝试禁用 EditRowPlugin 并使用 EditTablePlugin。

除此之外,您可以在 IRC 上尝试我们的官方支持 channel #foswiki,http://irclogs.foswiki.org/

关于perl - 使用 NYTProf 对 foswiki 进行分析会导致分析数据不完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33660305/

相关文章:

perl - 如果我的代码中没有诊断信息,为什么 Perl 会编译 diagnostics.pm?

Perl:$SIG{__DIE__}、eval {} 和堆栈跟踪

perl - 在数据库中加密用户密码的推荐方法是什么?

regex - 在 Perl 中使用预编译正则表达式时的问题

perl - 确认搜索 .htaccess 或其他点文件

api - 如何使用 Foswiki API 从外部系统访问表单 META 数据(单元格内容)

perl - 分析超时的 Perl CGI 脚本

perl - Perl 的 NYTProf 分析器