diegodevgroup / beanworkers
动态控制Supervisord在任何给定时间运行的进程数量的一种方式
1.0.0
2017-02-07 19:38 UTC
Requires
- php: >=5.3.0
- pda/pheanstalk: ^3.1
This package is auto-updated.
Last update: 2024-08-29 04:31:15 UTC
README
这是一个命令行脚本,可以根据beanstalk tube(s)中准备好的作业数量动态更新supervisord中的进程数量
使用简单,但有一些假设。请在尝试使用此代码之前确保有备份。
假设
- Supervisord程序在单独的ini文件中单独列出。
- 您是以可以编辑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
您的脚本可能应该每分钟运行一次。
您可以添加尽可能多的规则,但在这样做时请考虑您的资源。