Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache mod_perl";使用「;随机失效_Apache_Perl_Mod Perl - Fatal编程技术网

Apache mod_perl";使用「;随机失效

Apache mod_perl";使用「;随机失效,apache,perl,mod-perl,Apache,Perl,Mod Perl,我们的软件有一个web界面,使用perl和Apache以及mod_perl。在最近的Ubuntu 14安装(Apache2.4.7,perl版本5.18.2)中,我们遇到了一些问题,随机停止工作,出现以下错误。这将在一段随机的时间后发生(例如几小时或几天),之前的Ubuntu或CentOS安装都没有发生过,我们只能通过重新启动Apache暂时解决这一问题 调试它的困难源于这样一个事实:它可以正常运行一段时间,处理成百上千个请求,而且我们还无法确定任何特定的触发器使它停止工作 有人知道如何调试和解

我们的软件有一个web界面,使用perl和Apache以及mod_perl。在最近的Ubuntu 14安装(Apache2.4.7,perl版本5.18.2)中,我们遇到了一些问题,随机停止工作,出现以下错误。这将在一段随机的时间后发生(例如几小时或几天),之前的Ubuntu或CentOS安装都没有发生过,我们只能通过重新启动Apache暂时解决这一问题

调试它的困难源于这样一个事实:它可以正常运行一段时间,处理成百上千个请求,而且我们还无法确定任何特定的触发器使它停止工作

有人知道如何调试和解决它吗?多谢各位

以下是错误消息。每次web请求都会重复此操作,直到Apache重新启动。提到的Utils.pm是我们软件的一部分,在index.pl的第2行中是“use”d。Utils.pm本身“使用”了许多其他模块

[Sun Jul 27 19:26:18.110765 2014][:error][pid 26316:tid 139927794730752]尝试重新加载Utils.pm被中止。\n在/path/to/index.pl第2行的require中编译失败。\n编译失败--编译在/path/to/index.pl第2行中止。\n


我通过消除的过程来处理这些问题。如果部署没有完全成功,我想知道它与完全成功的部署有何不同

我将首先检查Perl依赖项的版本。不同的发行版可能包含不同版本的非核心模块。如果您的部署过程包括从CPAN中提取依赖项,则最近部署的模块版本可能比以前部署的模块版本更新

如果发现依赖项不同,我会将相同的版本从可接受的部署部署部署到新部署。如果它解决了这个问题,我就知道我必须为将来的部署改进流程。如果它没有解决问题,我将继续讨论可接受和不可接受部署之间的其他可识别差异。“可识别”取决于我拥有什么样的资源。我几乎是一名合格的系统管理员,因此我可能会与同事协商,以帮助我识别该级别的不一致性


我们知道,在某些环境中,软件可以按预期工作。我们可能无法找出确切的根本原因,但可以合理地预期,我们可以使环境对应用程序更友好。

通过在Apache2.conf中禁用Apache2::Reload并使用以下命令,似乎可以解决此问题:

PerlInitHandler Apache2::Reload
PerlSetVar ReloadAll Off

谢谢你,乔纳森。错误消息中提到的Utils.pm使用从Ubuntu包管理器和CPAN安装的大约10个模块。它们大多是与较旧的Ubuntu服务器不同的版本。你能建议如何缩小原因吗?查看部署差异的过程是合乎逻辑的,但我担心比较Ubuntu 12和Ubuntu 14可能是一项艰巨的任务。有人知道我们如何添加一些调试日志来从perl获取关于问题所在的更具体的错误消息吗?您是否尝试过在/path/to/index.pl中使用Carp::Always before-Utils?