首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为更快的FastCGI操作编译Perl

为更快的FastCGI操作编译Perl
EN

Stack Overflow用户
提问于 2021-07-10 19:51:34
回答 1查看 134关注 0票数 1

我一直在探索如何编译Perl程序,以提高复杂Perl CGI程序的初始启动时间。@Rurban's detailed overview对我很有帮助。使用perlcc -o launcher launcher.fpl编译我的主进程脚本可以获得更快的启动时间。最终的过程至少快20% --不是压倒性的,但仍然有意义。

为什么我试图编译为反对简单地进一步优化?我花了几个月的时间使用Devel::NYTProf来捕获效率低下的代码,所以我相信我已经攻击了大多数低挂优化结果。代码是快速的,一旦加载并通过mod_fcgi FastCGI运行,因此它将保持持久加载。但是,如果它发生崩溃,或者FastCGI需要生成一个新进程(要么是因为上一个进程已经达到了其最大请求级别,要么是有足够的需求需要另一个工作人员),那么缓慢的加载时间就会让它变得丑陋。新进程上的第一个请求可能需要1-1.5秒,而随后的请求则在200 at以下。

问题是:很多程序都是以Perl模块的形式出现的,核心“加载器”根据其所做的工作动态加载这些模块。例如,为我的网站首页加载的模块是最慢的模块之一。因此,合理地说,一些最重要的优化将来自于编译这些模块。但是,使用perlcc -B Front.pm -o Front.pmcperl -c Front.pm,当我试图运行该程序时,会出现一个无用的分段错误:

代码语言:javascript
复制
[root@server code]# ./launcher.fpl
Segmentation fault (core dumped)

编译过程不提供任何调试消息来提示问题。(要明确的是:为了保持简单,在本例中,launcher.fpl不是编译的,只是简单的Perl。)如果我删除pmc文件,以便launcher.fpl可以再次加载未编译的模块,那么它将在没有错误的情况下加载。

我也试过:

代码语言:javascript
复制
perl -MO=Bytecode,-m,-oFront.pmc Front.pm

这似乎稍微好一些,但是当我试图运行程序时会产生这个错误:

代码语言:javascript
复制
[root@server cgi-bin]# ./launcher.fpl
Number found where operator expected at /home/user/www/cgi-bin/Front.pm line 1, near "multi0.12"
Local: Sat Jul 10 14:58:18 2021: Dying from error.; At file: /home/user/www/cgi-bin/Front.pm; line: 1; id: 
Error: Unrecognized character \x08; marked by <-- HERE after ulti<-- HERE near column 36 at /home/user/www/cgi-bin/Front.pm line 1.
Compilation failed in require at /home/user/www/cgi-bin/Loader.pm line 117.

Loader.pm第117行是需要Front.pm(c)模块的地方:

代码语言:javascript
复制
state $moduleFront = require Front;

这就引出了两个主要问题:(1)我这样做是正确的吗?(2)如果我没有完全走在错误的道路上,那么如果编译的话,有没有办法调试我的模块段错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-10 22:25:25

如果

发生崩溃,或者FastCGI需要生成一个新的进程,那么缓慢的加载时间就会让它变得丑陋。

这不是真的;它应该只是一个叉,它是瞬间的。(即使确实需要时间,也是在请求之间,而不是在客户等待的时候。)这里没有需要解决的问题。

如果你没有分叉,这就是你应该集中精力的地方。通过分叉,您可以预加载脚本使用的模块。CGI的净效果不仅是避免加载perl所需的时间,也是执行模块所需的时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68331091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档