Event Machine聊天服务器停止,没有错误跟踪

时间:2015-03-02 18:42:51

标签: ruby-on-rails ruby multithreading eventmachine tcpsocket

我已经修改了EventMachine的SimpleChatServer示例,以便将Rails应用程序用作聊天服务器。我在一个单独的线程中初始化聊天服务器,如下所示。

Thread.new { 
        puts "I entered a new thread"
        EventMachine.run do

            puts "I entered a new thread"
            EventMachine.start_server("0.0.0.0", 3100, SimpleChatServer)
        end 
    }

我在运行apache的VPS上托管了我的应用程序,并使用Phusion Passenger为rails应用程序提供服务。除了一个问题外,聊天服务器工作正常:服务器在几分钟后自动停止。当我检查错误日志时,我发现没有任何与关机相关的信息。然而,我观察到的一个有趣的事情是关闭的一个奇怪的行为:在我的位置(上午11点 - 下午5点)的白天,聊天服务器在启动几分钟后停止(我的时区比服务器的时区提前10小时) )。然而,在我身边的夜间,服务器在没有关闭的情况下继续运行。这种奇怪的行为让我大吃一惊。

我自己的假设是,在我的白天,VPS有更多的负载来处理,因此它会杀死聊天服务器线程。我可以以某种方式避免吗?此外,我很想知道这种奇怪行为是否还有其他原因。请帮帮我这个

添加:当我查看错误日志时,我看到了这一点。 “[2015-03-06 08:00:20.5859 25041 / 7f20f1439700 agents / HelperAgent / Main.cpp:722]:断开进程25069的长时间连接” 这里25069是我的聊天服务器的PID。我怎么能避免这个?我怎样才能指示linux不要杀死我的进程?

1 个答案:

答案 0 :(得分:0)

很久以前我在github的一个帖子里找到了解决方法。该进程被杀死,因为乘客杀死空闲应用程序以节省内存。为了禁用此功能并保持我的进程运行,我需要在我的乘客配置中设置max_pool_idle_time to 0。以下是原始帖子的链接:https://www.phusionpassenger.com/documentation/Users%20guide%20Nginx.html#_configuring_phusion_passenger