diegodevgroup/beanworkers

动态控制Supervisord在任何给定时间运行的进程数量的一种方式

1.0.0 2017-02-07 19:38 UTC

This package is auto-updated.

Last update: 2024-08-29 04:31:15 UTC


README

这是一个命令行脚本,可以根据beanstalk tube(s)中准备好的作业数量动态更新supervisord中的进程数量

使用简单,但有一些假设。请在尝试使用此代码之前确保有备份。

假设

  1. Supervisord程序在单独的ini文件中单独列出。
  2. 您是以可以编辑ini文件和运行 supervisorctl 的用户身份运行此代码。

示例

$pheanstalk = new \Pheanstalk\Pheanstalk("$host:$port");
$worker = new Supervisord\Beanstalkd\Workers($pheanstalk, '/usr/bin/supervisorctl');
$worker->addIniFile('default', '/etc/supervisord.d/default.ini');
$worker->addRules('default', ['minimum_jobs' => 0, 'required_workers' => 1]);
$worker->addRules('default', ['minimum_jobs' => 10, 'required_workers' => 3]);
$worker->run();

在上面的示例中,工作进程获取默认tube的统计信息,如果当前有少于10个作业准备就绪,则将numprocs设置为1。如果有10个或更多,则将numprocs设置为3。然后通过 supervisorctl 更新supervisord。

添加到cron

您的脚本可能应该每分钟运行一次。

您可以添加尽可能多的规则,但在这样做时请考虑您的资源。