node.jsでプロセス分割

ちょっと1プロセスで使用できるメモリサイズの限界を超えてしまったので、
マルチプロセスで使用するメモリサイズを分割しようと思っていろいろとドキュメント読んだりしたけどイマイチよくわからなかった。

最初ははじめてのNode.js:マルチプロセスアプリケーションを作成するを見たんだけども、書いてる内容はリクエストの負荷分散の内容だったので殆ど参考にならず。

処理を分割したいだけでリクエストを割り振りたいわけじゃなかったので、
参考サイトのようにnet.createServer()を使う必要がなかった。
とりあえずchild_processモジュールをロードしてfork()することは分かった。

node本家のドキュメントを見て、いろいろとごにょごにょしてみたもののさっぱりうまくいかなかった。

親プロセスでリクエストに対して呼び出す子プロセスを切り替えたかったので
子プロセスにリクエストとレスポンスのオブジェクトをsend経由で渡したら動かないし…

そして、エラーをよくよく見たら、messageはオブジェクトでもいけるけど
なぜか一旦json形式のテキストデータに変換されるため、
functionを持つオブジェクトをmessageで受け渡しできない。

パフォーマンス優先で行きたかったので、子プロセスでレスポンスを返せるのが一番だったのだが…
仕方ないので、子プロセス側から親プロセスに実行結果を戻すようにして何とか完成。
プロセス間のデータはそれほど大きくないからオーバーヘッドもそれほど気にならない感じ。

そうはいっても大量のアクセスが来た場合にどうなるかはまだ不明だしなぁ。
とりあえずはこれでうまく行ってくれればと願うばかり。