Help us understand the problem. What is going on with this article?

Scout APMを利用してHerokuのR14/R15エラーを解析

はじめに

こちらのポストはScout APMを利用してHerokuのH12エラーを解析の続きになってますので、是非そちらも参考にしてください

R14とR15の違いについて

  • R14 - Memory quota exceeded

A dyno requires memory in excess of its quota. If this error occurs, the dyno will page to swap space to continue running, which may cause degraded process performance. The R14 error is calculated by total memory swap, rss and cache.

メモリの使用量がdynoに割り当てられた分を超えた場合に起こります。このエラーが起こった際には、dynoはメモリスワップすることでアプリケーションを動かします。これにより、アプリケーションのパフォーマンスが劇的に遅くなることがあります。

  • R15 - Memory quota vastly exceeded

A dyno requires vastly more memory than its quota and is consuming excessive swap space. If this error occurs, the dyno will be killed by the platform. The R15 error is calculated by total memory swap and rss; cache is not included.

メモリの使用量がdynoに割り当てられた分を超え、スワップスペースもかなり使用している際に起こります。(具体的には、割り当てられたメインメモリの二倍の量...free, hobby, standard 1xであれば、1GB)
このエラーがおきた際には、herokuによって、プロセスがkillされることになります。

まとめると、どちらもアプリケーションが完全に止められてしまうか、遅くなるかという違いになります。

Scout APM活用方法

上記エラーが起こった際には、次のようなログが出力されます
image

このエラーは頻繁に起こる例ではありますが、APMを使わずしてデバックするのはかなり困難です。メモリ問題の解決については、Scout APMが競合他者と比較しても、かなり優っている点になります。

まず始めに、このようなメモリに関する異常はScoutのOverviewページの線グラフにおいて、スパイクを発見することが出来ます。下のような例では、メモリの使用量が、ある時を境にして急激に上昇したことが確認出来ます。さらに下図の左下にも確認出来る、Memory Bloat Insightsをチェックすると、ArticlesController#index が表示されており、そこで精査すべき問題を表示しています。

image

このスパイクが起きた時間のトレースを確認すると、どこのレイヤーで多くのメモリを使用していたかは一目瞭然です。下図の例ではViewのレイヤーになります。さらに、バックトレースから、ペジネーションを行なわず、全レコードを表示していたことが原因だということを特定することができます。

image
※ScoutではGithub integrationを提供しておりますので、Scout上で、実際に誰がいつ書いたコードが問題の原因になっているのか確認することができます!

最後に

Scoutを活用してメモリの問題を解決したいという場合には、こちらのリンクを参考にしていただけると、更に詳細情報が確認できます。

14日間無料トライアルを実施中ですので、この機会に是非ご利用ください!

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away