【发布时间】:2016-01-23 19:58:39
【问题描述】:
我正在尝试在 nginx 服务器上加速我的 Perl 脚本。在测试脚本中,如果我注释掉对 3 个 .pm 文件的“使用”请求(所有这些文件都做自己的事情)......脚本会损失大约 600 毫秒的加载时间!现在我的猜测是,这是因为它必须从请求的子模块中加载子模块。例如:
use WebService::Solr;
use WebService::Solr::Query;
use Want::View;
use JSON;
use POSIX;
在带有 mod_perl 的 Apache 上,您可以设置启动脚本,以便将模块“导入”到内存中(以使其更快)。 nginx 和 Perl 有类似的可能吗?我的实时脚本目前需要 1.1 秒来处理(其中 800-900 毫秒是“等待”它响应!!!),所以我真的需要加快速度。
更新:我找到了这个,但它似乎不起作用:
http://search.cpan.org/~zzz/Nginx-Perl-1.2.9.7/src/http/modules/perl/Nginx.pm#DESCRIPTION
location ~ \.cgi$ {
perl_inc /usr/local/share/perl/5.20.2/;
# perl_require WebService/Solr;
... rest
}
我收到一个错误:
nginx:[emerg] 未知指令“perl_inc”在 /etc/nginx/sites-enabled/site.net:134
我想知道是不是因为我需要安装“Nginx”Perl 模块。当我尝试通过 MCPAN 安装它时,我得到了一个死:
-lpthread -lcrypt -lcrypto -lcrypto -lz \ -Wl,-E -fstack-protector -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu/perl/5.20/CORE -lperl -ldl -lm -lpthread -lc -lcrypt /usr/ bin/ld: 找不到 -lperl collect2: 错误: ld 返回 1 退出状态 objs/Makefile:213: 目标配方 'objs/nginx-perl' 失败 make[1]: * [objs/nginx-perl] 错误 1 make[1]: 离开目录 '/root/.cpan/build/Nginx-Perl-1.2.9.7-dbUMQF' Makefile:9: 配方 目标“构建”失败:* [构建] 错误 2
ZZZ/Nginx-Perl-1.2.9.7.tar.gz /usr/bin/make -- 不行
谢谢!
【问题讨论】:
-
我对 nginx 的细节无能为力,但如果你没有找到更好的东西,你仍然可以设置 Apache 和 mod_perl 并在那里让 nginx 路由 Perl 请求。
-
@NickP - 谢谢。我试图避免将 Apache 作为代理,因为它是在服务器上运行的另一件事 :)
-
如果我告诉你任何你认为明显流血的事情,请原谅我,但是“ld: cannot find -lperl”意味着你没有安装 libperl,所以你可以安装它吗?
-
@Michael 感谢您的回复。我只是尝试安装它,但似乎不是有效的安装?
apt-get install libperl- 给出:E: Unable to locate package libperl。我的朋友建议它需要用一些新标志重新编译 nginx ......虽然我不太确定 -
啊,你使用的是debian。尝试“apt-get install nginx-extras”。这应该取决于 libperl 的版本(可能没有 libperl,但有 libperl 的版本,例如 wheezy 上的“libperl5.14”)。无论如何,它可能会引入您想要的 perl 模块。