【问题标题】:Running thrift server as daemon将 thrift 服务器作为守护进程运行
【发布时间】:2013-03-26 01:18:11
【问题描述】:

现在我正在使用 Apache Thrift 进行测试,我目前正在使用用 Python 编写的 TThreadedServer,但是当我运行服务器时,它没有被守护。有没有办法让它作为守护进程运行,或者有没有另一种方法可以在生产环境中运行节俭?

【问题讨论】:

  • 对我来说,我使用supervisord 作为守护进程运行。您可以编写一个 bash 脚本来执行此操作。但我也不喜欢。去过那里,自己做的。 Google supervisord 这可能是运行服务的最简单方法。不过有一件事:主管不会杀死孩子。你必须使用群杀来杀死孩子。
  • 使用supervisord 运行守护程序是否足够强大以适应生产环境?
  • supervisord 只是一个知道如何管理进程的小程序。它绝对是可扩展的。人们在数百个虚拟机上运行它。当您扩展时,您不会查看守护程序。你必须有很多实例。你需要负载均衡。

标签: python thrift


【解决方案1】:

守护进程与节俭无关。 Thrift 只为不同平台提供通信层,您可以使用 thrift 支持的几种编程语言之一运行服务器(即您能想到的绝大多数)。无论您是用 Java、C++(我目前已经尝试过)还是 python 编写服务器,它们都不会创建守护进程。不支持此功能(例如 PHP 本身不支持多线程也不支持守护进程)。

刚刚看到supervisord,没怎么玩过,不过它似乎是管理thrift server之类进程的好选择。

【讨论】:

  • 那么你将如何在生产环境中运行 Thrift 服务器?
  • 一种可能是从supervisord 运行它们,不太文明的方式是在screen 下运行它们。我相信还有更多的解决方案。
  • 我见过一个非常大的计算系统(10 多名开发人员在开发它),它在 supervisord 上运行了测试和生产环境。它可以扫描内存使用情况,在出现任何问题时发出通知等。它很容易配置。据我记得,你会在配置中定义一个只运行 python thrift server 的作业,这就是全部(我猜是一行)
【解决方案2】:

我想你正在寻找这个: nohup hbase thrift start &

这是我发现在与 Linuxsession 断开连接后保持 thrift 工作的唯一方法。

【讨论】: