在新的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 Apache 2.4.18
我只能猜测它达到了某种资源限制,例如内存或文件,一旦发生,它就无法重新编译模块,并假定编译器的错误消息是真实的,而实际上,编译器正在达到资源限制。但这只是一个猜测。
谢谢, 克雷格