ユーザーがCSVファイルから連絡先をインポートできるRails3.2アプリケーションを構築しています。CSVファイルのいずれかの連絡先行に検証エラーが含まれている場合、連絡先はインポートされず、エラーはCSVファイルでユーザーに表示されます。たとえば、連絡先のCSVに20行あり、4行と15行にエラーがある場合、連絡先はインポートされず、CSVの4行目と15行目の両方でエラーが表示されます。
私はこの機能を一度に各行を読み取り、 「 Contact.new 」を使用して配列に「ビルド」レコードを作成することで実行しました。エラーが存在しない場合は、配列を反復処理してすべての連絡先を保存します。そうでない場合は、エラーが存在することを示します。
行数が40に増えると、連絡先をインポートするのに約20分かかります。これは不良です。そのパフォーマンスを向上させる方法はありますか?
更新: このアプリをUnicornを使用してHerokuにデプロイしました。この40件の連絡先のCSVをインポートすると、30秒後にアプリがクラッシュしますが、すべての連絡先がインポートされます。以下は、アプリのクラッシュの原因となったログです。
2012-12-26T15:40:28+00:00 app[web.1]: E, [2012-12-26T15:40:27.233802 #2] ERROR -- : worker=0 PID:54 timeout (31s > 30s), killing
2012-12-26T15:40:29+00:00 app[web.1]: E, [2012-12-26T15:40:29.724725 #2] ERROR -- : reaped #<Process::Status: pid 54 SIGKILL (signal 9)> worker=0
2012-12-26T15:40:32+00:00 app[web.1]: Disconnected from ActiveRecord
2012-12-26T15:40:33+00:00 app[web.1]: Disconnected from Redis
これについて何か考えはありますか?