问题标签 [supervisord]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1832 浏览

python - 如何通过 xmlrpc 安全地以编程方式访问 supervisord?

我需要能够以编程方式管理 supervisord 设置。此外,系统上的任何用户都不能访问 supervisord 的配置。因此,需要以某种方式确保通信安全。

我知道 supervisord 以 XML-RPC 的形式提供编程访问。我阅读了文档并尝试以多种方式使用它,但我一直遇到问题。

  1. Introduction page 上,文档建议为 XML-RPC 接口运行 HTTP 服务器,并使用 Python 标准库xmlrpclib与之通信。这里有两个问题:

    • supervisord.conf的inet_http_server指令仅包括用户名、密码和端口作为设置。没有加密连接的选项。
    • xmlrpclib 甚至不支持用户名和密码。当我使用语法username:password@host:port时,我得到IOError: unsupported XML-RPC protocol. 正如您在文档页面上的示例中看到的那样,没有进行身份验证。
  2. 由于 UNIX 套接字是安全的,我认为[unix_http_server]使用 xmlrpclib 连接是一个好主意。不过,我不知道身份验证是如何工作的,而且 xmlrpclib 只支持网络 HTTP/HTTPS 服务器。

  3. 文档中的另一页提到了一个supervisor.rpcinterface模块。不过,我无法在 Python 中访问这样的东西。为了收集更多关于为什么会这样的信息,我用 Pip 重新安装了 supervisord。sudo pip install --upgrade supervisor. 在 pip 输出中,我看到了Skipping installation of /usr/local/lib/python2.6/dist-packages/supervisor/__init__.py (namespace package). 我不知道为什么它会跳过命名空间包的安装。

我应该如何以编程方式安全地与 supervisord 通信?

0 投票
1 回答
7511 浏览

supervisord - Supervisord 不会启动被杀死的进程

我已经supervisord安装在我的 Ubuntu 10.04 上,它连续运行一个 Java 进程,并且应该在它以某种方式死亡或崩溃时修复(重新加载)进程。

在我的身上,我向那个Java 进程htop发送 SIGKILL、SIGTERM、SIGHUP、SIGSEGV 信号并监视文件,它说。/etc/logs/supervisord.log

08:38我用 SIGSEGV 杀死进程。为什么它以代码 0 退出,为什么根本不supervisord重新启动它?

supervisord.conf关于这个特定程序的所有内容如下:

当我启动 supervisord 时,进程工作得很好,但是没有得到治愈。

顺便说一句,任何想法如何将 supervisord 作为服务启动,以便在整个系统重新启动时自动启动?

0 投票
2 回答
14647 浏览

supervisord - 主管 - 运行 python 脚本 PYTHONPATH 问题

我正在使用主管运行 python 脚本:

但是该过程无法启动。以下是错误日志的内容:

似乎获得了mymodule,但如果我自己运行twitter.py,一切正常,只有当我通过主管运行它时才会抛出这个错误。

我将 mymodule 添加到 ~/.profile 文件中的 PYTHONPATH 中,如下所示:

是否有任何理由说明脚本在通过终端运行时会起作用,但在通过主管运行时却不起作用?任何帮助,将不胜感激。

0 投票
1 回答
6679 浏览

php - Supervisord 为 PHP 和 Gearman 添加多个进程

我最近使用 PHP5-FPM、Gearman 和 Supervisor 设置了 Ubuntu Natty。我已经编辑了我的 Supervisord 配置来运行 Gearman 工作人员。

lsof -i -P这是我在运行 supervisord 之前的相关信息(仅显示 gearmand 和 php 进程) :

这就是我在我lsof -i -P之后得到的/etc/init.d/supervisor stop && /etc/init.d/supervisor start

我没有看到任何关于 supervisord 本身的列表,我应该将 supervisord 视为命令之一吗?!

无论如何,当我再次停止并启动(或重新启动)supervisord 时:

看起来每次我停止并启动supervisord时,它都会创建另一个php进程,然后再创建另一个。只有当我重新启动 gearmand 时它才会恢复正常,即/etc/init.d/gearman-job-server stop && /etc/init.d/gearman-job-server start

这对我来说似乎不正常,因为当我停止 supervisord 时,它应该停止

这是supervisord的工作方式吗?!有什么办法可以防止这种情况发生吗?!

提前致谢。

编辑

我发现了导致问题的原因。这是与 supervisord.conf 和我的初始化脚本的小冲突。

我的 supervisord.conf 文件具有以下设置:

但是我的初始化脚本/etc/init.d/supervisord具有以下设置:

所以我只是更改了 supervisord.conf 中的设置以匹配我的 init 脚本中的设置。

另外,我stopsignal=KILL在我的supervisord配置文件(supervisord.conf)中添加了程序配置。

感谢 Minaz 的指导。

0 投票
1 回答
860 浏览

django - 芹菜减慢 django

我有一个使用 SQLite 的 django 1.3 站点。它运作良好。

我最近安装了 django-celery 和 django-kombu。我正在使用 supervisord 使用以下命令启动 celery dameon:

python manage.py celeryd -v 2 -B -s celery -E

一切正常,除了启动 celeryd 会使系统爬行。当我使用 top 时,我看到我正在创建一个长时间运行的 python 进程,它消耗了我共享服务器上 5% 到 10% 的 cpu。

在测试期间,我没有安排或运行芹菜任务。

0 投票
1 回答
9960 浏览

php - 如何从主管管理的 PHP 脚本中停止主管进程(过程控制系统)?

我正在使用Supervisor并行化 PHP 脚本。当我的脚本从数据库获得某个响应时,它会执行一个命令来停止由 Supervisord 守护进程控制的所有进程,使用supervisorctl. 这是命令:

问题是,当从 Supervisor 控制下的 PHP 脚本中触发时,此命令似乎没有任何影响。为什么?

如果我启动在 Supervisor 中运行的这组进程,然后直接从命令行触发脚本的另一个实例,它会工作并且所有 Supervisor 进程都将停止。

到底是怎么回事?守护程序的 PHP 脚本可以不是exec()shell 命令吗?

0 投票
0 回答
236 浏览

ruby - Supervisord 和 ruby​​ 1.9.2 - 睡眠导致 SIGTERM

我在 mac (10.7.2) 上使用 supervisord 来管理后台 ruby​​ 进程。

当我通过主管启动 ruby​​ 脚本时,如果脚本包含 a sleep(),为了降低 cpu 使用率,它会收到 aSIGTERM并停止执行,即使对于主管来说,该进程仍在运行。

0 投票
1 回答
7025 浏览

supervisord - supervisorctl 不会跟踪正在运行的进程

问题

我无法让主管正确地跟踪正在运行的进程。我正在运行版本3.0a8

这是我的 supervisord.conf 文件

这是最基本的主管配置文件,保存在/etc/supervisord/conf.d/duder.conf

但是,这就是我与主管的终端会话的样子

有任何想法吗?

0 投票
1 回答
3915 浏览

python - 主管 celeryd 的用户不正确

我有一些使用 celery 运行的定期任务(由 supervisord 守护),但是在尝试为用户创建主目录中的目录后,我为主管进程设置了“权限被拒绝”错误。在查看正在os.environ运行的 celery 任务中的 dict 后,我​​注意到USERvar 设置为“root”,而不是我在我的 supervisord 配置中为 celery 设置的用户。

这就是我的/usr/local/etc/supervisord.conf样子:

这可能是什么原因造成的?任何帮助将不胜感激!

0 投票
6 回答
28849 浏览

bash - supervisord 停止子进程

我与 supervisord 面临的一个问题是,当我有一个命令反过来产生另一个进程时,supervisord 无法杀死它。

例如,我有一个 java 进程,当它正常运行时就像

supervisord 配置文件如下所示:

在阻止它们从supervisorctl. 因此,当我从 supervisord 运行它并尝试从 supervisorctl 停止它时,只有顶级进程被杀死,而不是实际的 java 进程。