我们目前正在开发一个聊天(像facebook一样,有存储消息)。目前,至少有500名在线用户(这是一个约会网站),在高峰时,最多有3000名用户同时在线。
切换到websockets对我们来说是件"事情",但是当使用gem"websocket-rails"时,我们有点担心性能。阅读像https://www.igvita.com/2008/11/13/concurrency-is-a-myth-in-ruby/这样的文章会引起一些疑问。所以我们的问题是:
websocket-rails是否正在扼杀我们的应用程序?另一种选择是运行jsnode服务器并切换到faye,这在我们的可伸缩性中应该不是问题。有人对websocket-rails的可扩展性有经验吗?
GIL仍然存在,但不应该是主要问题。主要的问题是Rails方法不适合大规模聊天方法。
我的建议是对于这个特定的部分切换到事件机,并且仍然使用websocket(或其他推送机制,如push),并使用这种websocket EventMachine客户端。
你将被事件驱动,用一个单一的ruby线程,你仍然可以使用所有其他rails现有的库(这是node.js模型)