我想在Windows上运行一个速度/容量合理的Perl web应用程序(假设2008 R2 x64)。
目前,我的应用程序基于Mojolicus,使用Strawberry Perl,并通过Apache 2.2-win32作为CGI运行。大约有20000行代码,perl进程的创建需要大量时间,几乎需要一两秒钟,而实际处理只需要眨眼的时间。我想如果应用程序配置为快速CGI或持久风格,它会运行得更快,并且能够提供更多的req/sec。
如果我在Linux上,我可能会坚持PSGI/Plack/Starman和Nginx反向代理。不幸的是,Starman/Starlet不支持Win32。
Morbo/Tiggy不能满足我的需求,因为网络应用程序确实会阻止(DB调用),并且对于一些请求,它确实需要一段时间才能完成。
所以我现在正在考虑快速CGI解决方案。不幸的是,Apache和mod_fcgid不能与Perl一起使用(Stackoverflow)。我还能够找到或计算出一个与mod_fastcgi 2.4兼容的二进制文件。我还没有尝试mod_fastcgi+Apache2.2,但我希望我能留在Apache2.4上。
我也在考虑是否可以运行我自己的FCGI进程管理器(管理预工作的东西),以及Mojo::Server::FastCGI,并使用mod_proxy_FCGI来做反向代理。Perl模块FCGI::ProcManager也不支持Win32。是否还有其他的进程管理器,在C#中进行预处理?(最好用C#进行进一步的黑客攻击)
让我总结一下这个问题——
- 在Windows上以比CGI快得多的速度运行Perl web应用程序的最佳方式是什么,但不是以非阻塞方式运行
- 以及导致一个问题——如何使mod_fcgid与Perl协同工作?或者有没有fcgi流程管理器
您可以使用Mojolicus+mod_psgi+apache。
这里有预编译的二进制文件,尽管对于Apache 2.2:
http://strawberryperl.com/package/kmx/mod_psgi/
--Mike
您可以使用线程化的Plack服务器Thrall。