apache - mod_perl2 因大量使用而随机失败,无法恢复
问题描述
在新的 Ubuntu 服务器上,当超过 8 个客户端连接时,我们的 Apache2 mod_perl2 系统随机失败。一旦失败,它将无法恢复——所有进一步的快速 CGI 活动都会失败,并且必须重新启动 Apache。这个错误非常奇特:它说它试图重新加载的标准 Perl 模块中存在语法错误。显然这是错误的,因为它之前已经加载了很多次,而且这些是标准的 Perl 模块。
这是我们得到的 Perl 堆栈跟踪:
[Thu Oct 04 18:33:09.222314 2018] [perl:error] [pid 11191:tid 139899223140096] [client 10.100.1.61:38632] failed to resolve handler `Che\
mAxonServer': syntax error at /usr/lib/x86_64-linux-gnu/perl/5.22/IO/Handle.pm line 65, near "croak "usage: $class->new()""
syntax error at /usr/lib/x86_64-linux-gnu/perl/5.22/IO/Handle.pm line 73, near "croak "usage: $class->new_from_fd(FD, MODE)""
syntax error at /usr/lib/x86_64-linux-gnu/perl/5.22/IO/Handle.pm line 99, near "croak "IO::Handle: bad open mode: $mode""
syntax error at /usr/lib/x86_64-linux-gnu/perl/5.22/IO/Handle.pm line 104, near "croak 'usage: $io->fdopen(FD, MODE)'"
syntax error at /usr/lib/x86_64-linux-gnu/perl/5.22/IO/Handle.pm line 123, near "croak 'usage: $io->close()'"
syntax error at /usr/lib/x86_64-linux-gnu/perl/5.22/IO/Handle.pm line 137, near "croak 'usage: $io->opened()'"
syntax error at /usr/lib/x86_64-linux-gnu/perl/5.22/IO/Handle.pm line 142, near "croak 'usage: $io->fileno()'"
syntax error at /usr/lib/x86_64-linux-gnu/perl/5.22/IO/Handle.pm line 147, near "croak 'usage: $io->getc()'"
syntax error at /usr/lib/x86_64-linux-gnu/perl/5.22/IO/Handle.pm line 152, near "croak 'usage: $io->eof()'"
syntax error at /usr/lib/x86_64-linux-gnu/perl/5.22/IO/Handle.pm line 157, near "croak 'usage: $io->print(ARGS)'"
/usr/lib/x86_64-linux-gnu/perl/5.22/IO/Handle.pm has too many errors.
Compilation failed in require at /usr/lib/x86_64-linux-gnu/perl/5.22/IO/Seekable.pm line 9.
BEGIN failed--compilation aborted at /usr/lib/x86_64-linux-gnu/perl/5.22/IO/Seekable.pm line 9.
Compilation failed in require at /usr/lib/x86_64-linux-gnu/perl/5.22/IO/File.pm line 11.
BEGIN failed--compilation aborted at /usr/lib/x86_64-linux-gnu/perl/5.22/IO/File.pm line 11.
Compilation failed in require at /usr/share/perl/5.22/IO/Compress/Base.pm line 11.
BEGIN failed--compilation aborted at /usr/share/perl/5.22/IO/Compress/Base.pm line 11.
Compilation failed in require at /usr/share/perl/5.22/IO/Compress/RawDeflate.pm line 9.
BEGIN failed--compilation aborted at /usr/share/perl/5.22/IO/Compress/RawDeflate.pm line 9.
Compilation failed in require at /usr/share/perl/5.22/IO/Compress/Gzip.pm line 11.
BEGIN failed--compilation aborted at /usr/share/perl/5.22/IO/Compress/Gzip.pm line 11.
Compilation failed in require at /emi/src/trunk/public_html_chemaxon/fcgi/ChemAxonServer.pm line 29.
BEGIN failed--compilation aborted at /emi/src/trunk/public_html_chemaxon/fcgi/ChemAxonServer.pm line 29.
Compilation failed in require at (eval 3) line 2.
进一步尝试使用该系统会导致重复错误,如下所示:
[Thu Oct 04 18:33:09.514512 2018] [perl:error] [pid 11191:tid 139899072071424] [client 10.100.1.61:38686] failed to resolve handler `ChemAxonServer': Attempt to reload ChemAxonServer.pm aborted.\nCompilation failed in require at (eval 9) line 2.\n
据我们所知,新旧服务器之间没有显着差异:
Ubuntu 14.04 阿帕奇 2.4.18
我只能猜测它达到了某些资源限制,例如内存或文件,一旦发生这种情况,它就无法重新编译模块,并假设编译器的错误消息是真实的,而实际上编译器正在达到资源限制。但这只是一个猜测。
谢谢,克雷格
解决方案
推荐阅读
- blazor - 在所有 Blazor 页面上都需要授权
- c# - DataGridView properties are disable in child form
- c# - 在 Linux Docker 中查询 Asp.net Core/Kestrel 中的布尔属性的 Firestore
- amazon-web-services - 在 AWS Lambda 上的 Flask 中运行时,APscheduler 作业未触发
- bash - 在哪里可以找到自动完成脚本中经常使用的 _get_comp_words_by_ref 函数的文档?
- python - 为什么我的 apply pandas 函数将每个值都变成了 None 值?
- javascript - 为什么 'setAttribute' 函数在 javascript 中不起作用?
- python - 无法打印值:打印 mmol/L 而不是 mg/dL。使用:mmol/L = (mg/dL) / 18. 提示用户转换的 Python 代码
- android - 打开xml资源并绘制
- node.js - Windows PowerShell 不会从 Node.js 控制台记录 Date 对象