Node.jsを使って、動画変換を行うサービスを作成していた時の話です。
対象となる動画は、もともと映像のみのファイルと音声のみのファイルが別れており、これらを結合して1つの動画ファイルを作成する処理を行いました。
動画の変換にはffmpegを利用しています。当初はchild_processを利用して、Node.js上からコンソールコマンドを実行して、動画を作成していました。しかし、あまり綺麗な書き方ではないと思い、fluent-ffmpegと言うライブラリを使って、動画を変換するようにしました。
すると、動画の作成が始まったタイミングで、NodeサーバがHTTPを返さなかったり、データベースに書き込む処理が実行されなかったり、と問題が発生するようになりました。
おそらく、Node.jsの特徴であるシングルスレッドで全ての処理が実行されることが原因かと思い、最終的にはchild_processを使う方法へ戻しました。