トランザクションを全体に掛けて、大量のINSERT/UPDATEを行う処理があり、これを実行したら大量にメモリが消費され、物理メモリを食い尽し -> スワップが発生 -> Load averageが急上昇、という事態に見舞われました。
負荷テスト的なフェーズだったので実害はなかったですが。。。

ActiveRecordのトランザクションの仕組みで、ロールバック出来るように情報を保持しているらしく、それが原因で大量にメモリを消費してしまうみたいです。
作る上では問題だけど、バグという認識ではないみたいなので、こういうケースではトランザクションを使わないとか、トランザクションを分けるとか設計時に工夫する必要がありそうです。
設計に言語の特性入れるのには違和感がありますが。。。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です