2

我想以合理的速度/容量在 Windows(假设 2008 R2 x64)上运行 Perl Web 应用程序。

目前我的应用程序基于 Mojolicious,使用 Strawberry Perl 并通过 Apache 2.2-win32 作为 CGI 运行。大约 20000 行代码,perl 进程的创建需要很多时间,几乎一两秒,而实际处理只是一眨眼的时间。如果应用程序配置为快速 CGI 或持久样式,我会想象它运行得更快并且能够提供更多请求/秒。

如果我在 Linux 上,我可能会坚持使用 PSGI/Plack/Starman 和 Nginx 反向代理。不幸的是,Starman/Starlet 不支持 Win32。

Morbo/Twiggy 不能满足我的需要,因为 webapp 确实会阻塞(数据库调用),并且对于某些请求,它确实需要一段时间才能完成。

所以我现在正在寻找快速 CGI 解决方案。不幸的是 Apache 和 mod_fcgid 不适用于 Perl ( Stackoverflow )。而且我还能够找到或制定与 mod_fastcgi 与 2.4 兼容的二进制文件。我还没有尝试过的是 mod_fastcgi + Apache 2.2,但我希望我可以继续使用 Apache 2.4。

我也在考虑是否可以运行我自己的 FCGI 进程管理器(管理预分叉的东西),连同 Mojo::Server::FastCGI,并使用 mod_proxy_fcgi 来代替做反向代理。Perl 模块 FCGI::ProcManager 也不支持 Win32。可能有任何其他流程管理器,可能在 C# 中?(最好在 C# 中进行进一步的黑客攻击)

让我总结一下这个问题 -

  • 在 Windows 上以比 CGI 快得多的速度运行 Perl Web 应用程序的最佳方式是什么,但不是以非阻塞方式。
  • 并且可能会导致一个问题 - 如何使 mod_fcgid 与 Perl 一起工作?或者那里有任何 fcgi 进程管理器吗?
4

2 回答 2

2

你可以使用 Mojolicious + mod_psgi + apache。

这里有预编译的二进制文件,但对于 Apache 2.2:

http://strawberryperl.com/package/kmx/mod_psgi/

——迈克

于 2012-08-23T17:46:24.260 回答
1

您可以使用线程化的 Plack 服务器Thrall

于 2013-07-16T13:39:21.343 回答