5

だから私は恐ろしいメモリリークの問題を抱えたこのレールアプリを手に入れました。私は Heroku で実行しています。この数日間、いったい何が原因なのかを突き止めようとしている間、5 時間ごとにアプリを継続的に再起動する必要がありました。そうしないと、メモリが 512 を超えてしまいました。アプリがクラッシュします。

私は Oink を使用していますが、インスタンス化されたクラスに問題はありません。唯一のことは、ページが読み込まれるたびに、使用されるメモリが徐々に増加することです。どのページをロードするかは問題ではなく、一見ランダムに見えます。

New Relic も、特定のコントローラー アクションとは関係がないため、あまり役に立ちませんでした。

私が見つけた唯一のことは、ObjectSpace を使用することでした。これにより、メモリ内の膨大な数の文字列オブジェクトが明らかになり、その数はどんどん増えていきました。文字列の値をログに記録するために小さなツールを使用しましたが、それらはすべて空白です。nil ではなく...空白です。私の運用アプリでは、定期的に 200,000 を超える文字列オブジェクトが使用されています。

これらが何から来ている可能性があるのか​​ 誰にも分かりますか?これは、サイトを維持するために 5 時間ごとにコンピューターの前に出なければならないことを非常にストレスに感じています。

ありがとう!

4

1 に答える 1

9

わかりました、これはまったくばかげていますが、2週間の不安と闘争の後、このリークの解決策を見つけました. 文字通り、すべては次の 1 行に集約されます。

ActionMailer::Base.delivery_method = :smtp

私のapplication.rb構成ファイルで。

次のようになっているはずです。

config.action_mailer.delivery_method = :smtp

どうやって間違えたのかわかりませんが、私のアプリに大混乱をもたらしました。

なぜこれがこのような問題を引き起こすのか誰にも分かりますか? クエリごとに約 1 メガバイトのメモリを失っていました。クレイジー。

于 2012-11-27T08:05:01.007 に答える