我有一个非常慢的 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/