Apache 上是否有实时限制 cgi 进程的设置?

Apache 上是否有实时限制 cgi 进程的设置?

如果我的 perl 脚本没有自然完成,我希望 Apache 在 1 分钟后终止它。Apache(或其他服务器软件)中是否有设置可以执行此操作?

答案1

CGI包装完成 suEXEC 的大部分工作(在备用权限下运行脚本),但它还允许您设置资源限制:

--with-rlimit-cpu=SECONDS
    limit cpu time with setrlimit
--with-rlimit-vmem=BYTES
    limit total virtual memory with setrlimit
--with-rlimit-as=BYTES
    limit total available memory with setrlimit
--with-rlimit-fsize=BYTES
    limit writable file size with setrlimit
--with-rlimit-data=BYTES
    limit data segment size with setrlimit
--with-rlimit-stack=BYTES
    limit stack segment size with setrlimit
--with-rlimit-core=BYTES
    limit core file size with setrlimit
--with-rlimit-rss=BYTES
    limit resident set size with setrlimit
--with-rlimit-nproc=COUNT
    limit number of processes with setrlimit
--with-rlimit-nofile=COUNT
    limit number of open files with setrlimit
--with-rlimit-memlock=BYTES
    limit lockable memory with setrlimit

答案2

我想到两种解决方案(注意:我是 UNIX/Linux 专家):

  1. 修改您的 perl 代码以设置警报,然后编写一个信号处理器来捕获警报并执行您想要的任何处理。

  2. 您可以操纵进程的 CPU 限制,使其在达到 1 秒 CPU 时间时终止。但是,达到 1 秒 CPU 时间的实际时钟时间长度取决于您的 perl 脚本。

答案3

答案4

您始终可以将“alarm 60;”放在 Perl 脚本的顶部。但是,这需要修改所有 Perl 程序。

相关内容