繁体   English   中英

Windows/Apache 上的 ActivePerl 性能问题

[英]ActivePerl on Windows/Apache performance problems

我想请你帮忙。 在我们公司,我们在 Windows 机器上安装了 Bugzilla 4.0。 为了运行 perl,我们目前正在使用 ActivePerl。

问题是,我们有大约 50 个用户定期查询 Bugzilla web 服务,而服务器无法承受此负载。 我们发现,这是由在每个请求期间运行的 perl.exe 引起的。 服务器工作负载 (CPU) 在高峰期达到 90%。

你有没有遇到过这样的问题? 我们可以进行任何可能的配置来提高性能吗?

我们正在使用:Apache 2.2.17 和 ActivePerl 5.8.9 b829。 非常感谢您,这给我们(尤其是我)带来了很多麻烦。

随着网站的增长,这是一个相当普遍的问题。 而且它也不特别限于 Perl。 有解决方案。 正如一个人提到的,有 mod_perl,它本质上是作为 Apache 模块安装的。 It can be used in a sort of simple version via Apache::Registry, or you can go all the way by writing components that interact with the Apache API at each request phase. 无论您使用 mod_perl 采用什么方法,都有一些常见的注意事项: 这是一个持久的过程,意思是(简单来说),Perl 从一个请求到下一个请求,再到下一个请求,都保持驻留,这样您就可以消除启动成本。 如果没有一些清理和重构,CGI 脚本通常不能直接移植到 mod_perl。 例如,由于脚本在持久环境中运行,全局变量不会在请求之间自行重置。 有一整套“陷阱”需要克服。 为此,Apache::Registry 在 mod_perl 环境中更容易处理,但不能提供直接为 API 编程可以提供的 100% 的性能马力。 尽管如此,这是一个很好的折衷方案。

另一种选择是 FastCGI,您可以在FastCGI 网站上阅读。

编写良好的 CGI 脚本可以通过一些努力移植到 mod_perl 或 FastCGI。 出于这个原因,这些可能是最不痛苦的方法。 一些脚本只需很少的清理就可以转换。 其他人可能需要做很多工作,但应该仍然可以。

幸运的是,CPAN 上有大量有用的模块可以帮助您使用 mod_perl 或 FastCGI。 例如,在 CPAN 上的 Apache::* 层次结构下,您会发现许多旨在与 mod_perl 一起使用的工具。 关于 FastCGI,您甚至可以找到 Catalyst 和 Mojolicious 相关的模块来帮助融合两者,尽管最后两个建议可能需要一些真正的重构。

我发现 Practical mod_perl 作为一个起点很有帮助(一本 O'Reilly 的书)。

深思熟虑: mod_perl

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM