さて、私はボットをホストしています。私が正気を保っているのは、私が今持っている唯一のものです。これは、音楽/チャット Web サイト用の IRC タイプのボットで、多くのことを行います。しかし、問題はそれらをオンラインに保つことです。以前は、すべてのボットを個別にforeverで起動する sh ファイルを使用していました。
cd dir/bots
forever start bot1.js
forever start bot2.js
...
などなど。そしてそれはうまくいきました。ただし、ボット自体は約 30 MB の RAM を使用しますが、forever プロセスも約 30 MB の RAM を使用します。私が実行していたのと同じくらい多くのボットで、RAM がほぼ限界に達していましたが、それは良くありませんでした。別のサーバーを取得する必要がある場合、状況は私にとって無限に複雑になるからです。正直に言うと、 、 私はこれがあまり得意ではありません。
そこで私はいくつかの調査を行い、child.fork()
1 つの bot.js を使用して残りのボットを生成することにしました。そして、それは美しく機能し、RAMの使用量を以前の半分以下に減らしました. しかし今では、ボットをオンラインにしておくのは苦痛です。
var child = require("child_process");
var running = {};
var bots = ["bot1","bot2","bot3"];
for (var i=0;i<bots.length;i++) {
running[bots[i]] = child.fork("bots/"+bots[i]+".js");
};
私の質問は、これがこのセットアップを実行する最も効率的な方法ですか? それらは常にクラッシュしているため、私が何らかの手段で信頼できると見なされたい場合、それらはかなり自給自足である必要があり、私が眠っている夜の未明に停止するだけです.
現在、ノード スケジューラを使用して、ボットにメッセージを送信する偽の cron ジョブを作成しています (ボットがサービスに接続されている場合ではなく、js ファイルが実行されている限り返されるため、ノード メッセージではありません)。サービスから、ボットにコマンドを返させます。そして、ボットから 15 秒以内に応答がない場合は再起動するようにコマンドを設定します。しかし、常に機能しているわけではないようです。そして、私は途方に暮れています。
助けていただければ幸いです。できれば詳細をお知らせします。