锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 英语翻译 / Apache / 不能主动定义子程序、发送另一个SIGHUP和执行优雅重启时进程停止
服务方向
软件开发
办公财务MIS
股票
设备监控
网页信息采集及控制
多媒体
软件开发培训
Java 安卓移动开发
Java Web开发
HTML5培训
iOS培训
网站前端开发
VC++
C++游戏开发培训
C#软件
C语言(Linux)
ASP.NET网站开发(C#)
C#软件+ASP.NET网站
SOCKET网络通信开发
COMOLE和ActiveX开发
C++(Linux)
汇编和破解
驱动开发
SkinMagicVC++换肤
流媒体开发
MicroStation二次开发
计算机英语翻译
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

锐英源精品开源心得,转载请注明:“锐英源www.wisestudy.cn,孙老师作品,电话13803810136。需要全文内容也请联系孙老师。

不能主动定义子程序、发送另一个SIGHUP和执行优雅重启时进程停止


Can’t undef active subroutine 不能主动定义子程序

Can’t undef active subroutine at

/usr/apps/lib/perl5/site_perl/5.005/aix/Apache/Registry.pm line 102.

Called from package Apache::Registry, filename

/usr/apps/lib/perl5/site_perl/5.005/aix/Apache/Registry.pm, line 102

This problem is caused when a client drops the connection while httpd is in the middle of a write. httpd times out, sending a SIGPIPE, and Perl (in that child) is stuck in the middle of its eval context. This is fixed by the Apache::SIG module which is called by default. This should not happen unless you have code that is messing with $SIG{PIPE}. It’s also triggered only when you’ve changed your script on disk and mod_perl is trying to reload it.

这个问题是当客户端断开连接而引起的,这是httpd是写在中间,httpd暂停,发送SIGPIPE并且Perl(在子程序中)是夹在eval上下文之间。这是固定的Apache::SIG模块在默认情况下被调用。这应该不会发生,除非你有代码干扰$SIG{PIPE}。这也引发了只有当你在磁盘上改变你的脚本并且mod_perl正试图重新加载它。

[warn] child process 30388 did not exit, sending another SIGHUP [警告]子进程30388没有退出,发送另一个SIGHUP

From mod_perl.pod: With Apache versions 1.3.0 and higher, mod_perl will call the perl_destruct() Perl API function during the child exit phase. This will cause proper execution of END blocks found during server startup as well as invoking the DESTROY method on global objects which are still alive. It is possible that this operation may take a long time to finish, causing problems during a restart. If your code does not contain any END blocks or DESTROY methods which need to be run during child server shutdown, this destruction can be avoided by setting the PERL_DESTRUCT_LEVEL environment variable to -1. Be aware that ‘your code’ includes any modules you use and they may well have DESTROY and END blocks...

从mod_perl.pod::和Apache1.3.0版本或者更高的版本,mod_perl将在子程序的退出阶段调用perl_destruct Perl()API函数。这将导致适当的执行结束时发现块服务器启动以及调用全局对象的销毁方法仍然活着。该操作可能需要很长时间才能完成,这很可能在重启时产生问题。如果您的代码不含任何END blocks或DESTROY的方法,需要在子服务器关闭的时候运行,这个破坏可以通过设置PERL_DESTRUCT_LEVEL环境变量为-1来避免。要知道“你的代码”包括任何模块,他们很有可能有DESTROY和 END blocks.……

Processes Get Stuck on Graceful Restart 执行优雅重启时进程停止

If you see a process stuck in "G" (Gracefully finishing) after a doing a graceful restart (sending kill -SIGUSR1) it means that the process is hanging in perl_destruct() while trying to cleanup. This cleanup normally isn’t a requirement, you can disable it by setting the PERL_DESTRUCT_LEVEL environment variable to -1.

做一个优雅重启(发送kill -SIGUSR1)后,如果你看到一个进程陷入“G”(优雅完成)这意味着这个过程是阻塞在perl_destruct()里了,它正在试图清理。这清理通常不是必须的,你可以通过设置PERL_DESTRUCT_LEVEL环境变量为-1禁用它。

友情链接
版权所有 Copyright(c)2004-2015 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州市文化路47号院1号楼4层(47-1楼位于文化路和红专路十字路口东北角,郑州大学工学院招待所南边,工学院科技报告厅西边。)