0

iOS および Web クライアントと連携する Rails アプリケーションがあります。現在、Open3 を使用して Rails コントローラーからサブプロセスを生成し、MongoDB で node.js を実行しているチャット サーバーにデータを送信しています。しかし、本番環境で数日後、サブプロセスによって Rails アプリが非常に遅くなり、CPU 使用率が大幅に増加することがわかりました。

長期的な解決策は、チャット サーバーを Express などの REST API フレームワークでラップすることです。しかし、短期的には、サブプロセスの実行を高速化する方法 (スポーン、実行など) を簡単に修正したいと考えています。

何か案は?

4

1 に答える 1

1

これは非常に一般的な問題 (バックグラウンドでメッセージを送信する) ですが、ソリューションはあまり効率的ではありません。工程管理が大変。したがって、一般的には、バックグラウンド ジョブ プロセッサまたはある種のメッセージ キューが必要です。Zeromq、redis、遅延ジョブなど... もちろん、REST API フレームワークを実行することが望ましいですが、それが唯一の解決策ではありません。考慮すべきいくつかのオプションを次に示します。

超高速の場合、次のようなものを使用できます。

http://zeromq.org/

一般的なバックグラウンド ジョブ処理の場合:

https://www.ruby-toolbox.com/categories/Background_Jobs

于 2015-10-23T22:26:48.780 に答える