主管无法在共享主机上启动

时间:2014-11-08 03:34:05

标签: python laravel-4 websocket supervisord ratchet

我尝试使用Laravel 4设置实时聊天应用程序,如下所述:https://xuri.me/2014/09/08/laravel-4-real-time-chat.html

我在Hostmonster上有一个共享主机帐户,有一个专用的IP地址。我可以使用Artisan命令通过SSH连接到Web服务器并启动BrainSocket Ratchet WebSocket服务器,在端口8080上运行它。但是,Hostmonster的PHP进程超时为2小时。

我可以通过运行Artisan命令来使用Supervisor将WebSocket服务器作为PHP守护程序启动来避免这种情况。如果停止,Supervisor也会自动重启WebSocket服务器。我的目标是使用Supervisor使用Supervisor运行WebSocket服务器:https://xuri.me/2014/09/09/run-brainsocket-laravel-artisan-command-in-supervisor.html

我使用此方法成功安装了Python(2.7.8)。我使用easy_install方法在Setuptools上安装了Supervisor。我测试过Supervisor已成功安装在Python中。我创建了一个Supervisor配置文件(supervisord.conf)。

显示Python bindir和pythonpath的.bashrc文件的一部分:

导出PYTHONPATH = $ HOME / python / lib / python2.7 / site-packages:$ PYTHONPATH
export PATH = $ HOME / python / bin:$ PATH

当我进入" supervisord"在Python bindir中的命令,Supervisor无法启动,我收到以下错误:

追踪(最近一次通话):   文件" / home3 / thecdeor / python / bin / supervisord",第9行,in     load_entry_point('主管== 3.1.3',' console_scripts',' supervisord')()
  文件" /home3/thecdeor/python/lib/python2.7/site-packages/supervisor-3.1.3-py2.7.egg/supervisor/supervisord.py" ;,第366行,在main go(选项)
  文件" /home3/thecdeor/python/lib/python2.7/site-packages/supervisor-3.1.3-py2.7.egg/supervisor/supervisord.py" ;,第376行,进入d。主()
  文件" /home3/thecdeor/python/lib/python2.7/site-packages/supervisor-3.1.3-py2.7.egg/supervisor/supervisord.py" ;,第70行,在主rlimit_messages = self.options.set_rlimits()
  文件" /home3/thecdeor/python/lib/python2.7/site-packages/supervisor-3.1.3-py2.7.egg/supervisor/options.py",第1316行,在set_rlimits self中。用法(msg%locals())
KeyError:' min'。

我不明白这个错误意味着什么。我已经在互联网上试图找出它,但没有其他人似乎有这个错误。

当我进入" supervisorctl"在Python bindir文件夹中的命令,我收到以下错误:

unix:///home3/thecdeor/python/bin/tmp/supervisor.sock没有这样的文件

我对这些错误感到困惑。有人可以帮忙吗?如果我目前的声誉允许我这样做,我会发布更多链接。如果您需要更多服务器信息或任何其他信息,请告诉我。我以前从未在StackOverflow上发帖,而且我从来没有遇到过这样的问题,所以我不太确定要发布什么和多少信息。

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,结果证明主管可以在我的系统中创建的进程数量最多。此编号在 supervisor.conf supervisord 部分中定义的参数 minprocs 中指定。

默认情况下,supervisor将此参数设置为200,在我的示例中,它表示某个进程可以在我的系统中创建的进程的硬限制。因此,在 Options 模块中定义的类 ServerOptions 的方法 set_rlimits 中调用函数resource.setrlimit(resource, limits)( options.py文件)引发异常 ValueError

解决方案。错误消息信息量不大,甚至误导。无论如何,为了解决这个问题,我只是减少了主管在我的系统中可以创建的最大进程数量的一半。

minprocs=100 ; (min. avail process descriptors;default 200)

有关更多信息,您可以查看python资源模块的documentation

答案 1 :(得分:0)

这只是标记了jasg的答案。在set_rlimits方法

中,Supervisord的options.py文件中存在一个错误

我尝试设置minprocs = 100和even = 2,但收到了同样的错误。

如果你这样做

 ulimit -a | grep -E "open files|max user processes"

“打开文件”数量必须>> =您为minprocs指定的数量。

最大用户流程数量必须>> =您为minfds指定的数量。

以下是此修复程序的错误跟踪器:https://github.com/Supervisor/supervisor/issues/562

应该在下一个版本中修复。