最近Heroku改变了他们的websockets的工作方式。当我将dyno滑块设置为2或更多时,我的MeteorJS应用程序现在无法连接。这是我在浏览器控制台中遇到的错误:
POST http://name.herokuapp.com/sockjs/414/ye3xmaq8/xhr_send 404 (Not Found)
我并不特别需要2个dyno的表现,我只能在1 dyno睡觉后发生长时间延迟。
答案 0 :(得分:2)
正如Slava所说,Heroku目前没有Sticky Sessions,所以拥有一个以上的Dyno是行不通的。如果没有粘滞会话,来自同一客户端的后续请求将转到不同的伺服器,而Meteor会在服务器上存储发布状态,因此这不起作用。
有一个解决你的Dyno睡觉的具体问题的方法。首先转到您的应用程序,然后在底部选择“+ Get Add-ons”,然后搜索“Heroku Scheduler”。此插件将允许您运行计划任务。如果那个计划的任务每隔十分钟左右就会对你的Heroku服务器“卷曲”,那么Dyno将不会进入睡眠状态,因为它看到的是流量(即使它在heroku中的形式:)
预定的命令可能如下所示:
curl http://www.yourHerokuAppUrl.com/ -s > /dev/null
选择1x dyno和“每10分钟”的频率,您将不会因等待dyno从睡眠状态回来而导致延迟问题。
答案 1 :(得分:2)
只是为了更新答案。
自2015年4月起,Heroku supports session affinity(或粘性会话),您可以在Meteor应用中使用许多dynos
只需使用
启用它$ heroku labs:enable http-session-affinity