【问题标题】:Linux background task maximum process timeLinux后台任务最大处理时间
【发布时间】:2016-06-11 15:21:45
【问题描述】:

是否有固定的持续时间作为后台任务可以运行多长时间?

这就是我手动运行脚本(后台任务)的方式:

php /var/www/html/app_v2/console.php massbulkinsert app.example.com 10 > /dev/null &

此脚本处理庞大的数据集,大约需要 1 小时才能完成。

第一次停在第 10100 条记录。第二次停在第 9975 次记录。它没有终止的模式。

top 命令,mysql pid 大部分时间都在 98%、100% 和 130%,可用内存大约有 200 MB。有足够的磁盘空间。

【问题讨论】:

  • @Nordenheim,CLI 的 max_execution_time 默认为 0(无限制)。
  • 您说您正在监控系统,但看起来您只是在监控负载。您在脚本中进行了哪些实际调试?您是否设置了异常/错误处理?你检查过系统日志吗?
  • @Nordenheim max_execution_time 已经是 0
  • @Devon 我启用了应用程序级别的日志,所以我正在检查这些日志。我已经设置了一些退出点,但没有一个被触发。我还没有检查系统日志。现在会看到它

标签: php mysql linux yii cron


【解决方案1】:

这有点疯狂,但通常当您使用少量数据成功时 - 然后因大量数据而崩溃,这与内存问题有关。

你应该看看 /etc/php5/cli.那里可能还有一个名为 cgi 的文件夹 - 取决于您的框架如何执行后台脚本,我希望使用这两种配置中的任何一种。

扩展名为“ini”的文件是 PHP 脚本的配置,这些是您感兴趣的值之一(值是 debian 8 上的默认值):

; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 30


; Maximum amount of memory a script may consume
; http://php.net/memory-limit
memory_limit = -1

请注意,脚本可以花费多长时间来读取通过管道发送给它的数据,例如管道 (max_input_time)。但是看到您的命令,您并没有通过标准输入将值传递给它 - 但很可能正在读取磁盘上已经存在的文件。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 2014-12-20
    • 2012-11-26
    • 2019-10-26
    相关资源
    最近更新 更多