Skip Navigation
Show nav
Heroku Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
View categories

Categories

  • Heroku のアーキテクチャ
    • Dyno (アプリコンテナ)
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • コマンドライン
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリー
    • 継続的統合
  • 言語サポート
    • Node.js
    • Ruby
      • Bundler の使用
      • Rails のサポート
    • Python
      • Django の使用
      • Python でのバックグランドジョブ
    • Java
      • Maven の使用
      • Java でのデータベース操作
      • Spring Boot の使用
      • Java の高度なトピック
    • PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres Getting Started
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
    • Heroku Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
    • コンプライアンス
  • Heroku Enterprise
    • Private Space
      • インフラストラクチャネットワーキング
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
    • シングルサインオン (SSO)
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Integrating with Salesforce
  • Heroku の拡張
  • Heroku Labs
  • 'Heroku Labs: log-runtime-metrics'

'Heroku Labs: log-runtime-metrics'

日本語 — Switch to English

この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。

最終更新日 2022年02月14日(月)

Table of Contents

  • 有効化
  • 無効化
  • 仕組み
  • ログ形式
  • CPU 負荷平均
  • メモリとスワップ
  • 負荷平均について

この Heroku Labs​ の log-runtime-metrics​ 機能により、実行中の dyno の負荷とメモリ使用量への可視性を有効にするための実験的サポートが追加されます。メモリ使用、スワップ使用、負荷平均に関する dyno ごとの統計は、アプリのログストリームに挿入され、その後 heroku logs --tail​ で表示したり、グラフや、アプリログを消費するアドオン​によるアラート生成に使用したり、ログドレイン​に送信したりできます。この機能を有効にしてもコストは発生しません。

Heroku Labs を通して追加された機能は実験的であり、変更される場合があります。

有効化

$ heroku labs:enable log-runtime-metrics
Enabling log-runtime-metrics for myapp... done
$ heroku restart

無効化

$ heroku labs:disable log-runtime-metrics
Disabling log-runtime-metrics for myapp... done
$ heroku restart

この機能を完全に無効にするには、デプロイの実行が必要になることがあります。これを行うには、空のコミット git commit --allow-empty -m "Force Heroku build."​ に続けて Git プッシュします。

仕組み

負荷とメモリ使用量のメトリクスは、Logplex ログストリームでシステムログ​として表示されます。メトリクスは、おおよそ 20 秒に 1 回の頻度で、実行中の dyno ごとに送出されます。

ログ形式

ランタイムメトリクスのログの形式は次のとおりです。

source=web.1 dyno=heroku.2808254.d97d0ea7-cf3d-411b-b453-d2943a50b456 sample#load_avg_1m=2.46 sample#load_avg_5m=1.06 sample#load_avg_15m=0.99
source=web.1 dyno=heroku.2808254.d97d0ea7-cf3d-411b-b453-d2943a50b456 sample#memory_total=21.00MB sample#memory_rss=21.22MB sample#memory_cache=0.00MB sample#memory_swap=0.00MB sample#memory_pgpgin=348836pages sample#memory_pgpgout=343403pages

source​ フィールドは Dyno formation​ の dyno を識別し、アプリケーションログを消費するシステムによって使用されることを目的にしています。dyno​ フィールドには、プラットフォーム上での個別の dyno 実行を一意に識別するアプリ ID と UUID が含まれています。アプリメトリクスの有効期間中に、dyno をいつデプロイまたは再起動するかに関連して、同じ source​ 値が多くの異なる dyno​ 値を持つことを確認できます。

ログに送出されるメトリクスのキーと値のペアの順序は保証されません。

CPU 負荷平均

次のフィールドは、CPU 負荷平均に対して報告されます。

  • Load Average 1m​ (load_avg_1m​): 過去 1 分間の dyno の負荷平均。これには、待機状態のキュー​に入っている (つまり、処理待ちの) CPU タスクの数が反映されます。負荷平均の計算方法についての詳細は、下記​を参照してください。
  • Load Average 5m​ (load_avg_5m​): 過去 5 分間の dyno の負荷平均。1m の負荷平均と同じ方法で計算されます。
  • Load Average 15m​ (load_avg_15m​): 過去 15 分間の dyno の負荷平均。1m の負荷平均と同じ方法で計算されます。

メモリとスワップ

次のフィールドは、メモリ消費とスワップに対して報告されます。

  • Resident Memory​ (memory_rss​): dyno のメモリのうち、RAM に保持されている部分 (MB)。
  • Disk Cache Memory​ (memory_cache​): dyno のメモリのうち、ディスクキャッシュとして使用される部分 (MB)。
  • Swap Memory​ (memory_swap​): dyno のメモリのうち、ディスクに保存されている部分 (MB)。アプリで 1 dyno 当たり数メガバイトのスワップを使用するのは普通です。ただし、スワップレベルが高い場合は、dyno のサイズと比較してメモリの使用量が多すぎることを示している可能性があります。応答時間が遅くなる可能性があるため、このような状況は避ける必要があります。
  • Total Memory​ (memory_total​): dyno によって使用されている合計メモリ (MB)。常駐メモリ、キャッシュメモリ、スワップメモリの合計と同じです。
  • Memory Quota​ (memory_quota​): R14 がトリガーされる常駐メモリ (memory_rss​) の値 (MB)。 このメトリクスは、まだ Private Spaces ユーザーからは使用できません。
  • Pages Written to Disk​ (memory_pgpgout​): ディスクに書き込まれたページの累積合計。この数値が突然高く変動した場合は、スワップ使用での短期間の急増を示している場合があります。他のメモリ関連のメトリクスはポイントインタイムスナップショットであり、短期間の急増を見逃す可能性があります。
  • Pages Read from Disk​ (memory_pgpgin​): ディスクから読み取られたページの累積合計。前のメトリクスと同様に、突然の変動がないか監視します。

負荷平均について

Dyno Manager は、dyno ごとの実行可能タスクの数を約 20 秒おきに受け取ります。実行可能タスクは、現在 CPU で実行されているか、または CPU での実行を待機しているプロセスまたはスレッドですが、それ以外の場合は、実行するために必要なすべてのリソースを備えています。指数関数的に減衰された移動平均は、次の繰り返しのアルゴリズムで、30 分前からの実行可能タスクの数を使用して計算されます。

expterm = Math.exp(-(count_of_runnable_tasks.time - avg.time) / (period))
newavg = (1 - expterm) * count_of_runnable_tasks.value + expterm * avg.value

ここで、period​ は 1 分、5 分、15 分 (秒単位) のいずれかであり、count_of_runnable_tasks​ は特定の時点でのキュー内のタスクの数のエントリであり、avg​ は最後の繰り返しでの以前に計算された指数関数的な負荷平均です。

Heroku の dyno の負荷計算は、割り込み不可能なスリープ状態のプロセスが含まれないため LINUX の負荷計算​とは異なり、従来の UNIX の負荷計算に似たものになっています。

関連カテゴリー

  • Heroku Labs
'Heroku Labs: アプリケーション関連のメトリクスのベータチャネル' Heroku Labs の概要

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Podcasts
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing

Subscribe to our monthly newsletter

Your email address:

  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Heroku Podcasts
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Facebook
  • Instagram
  • Github
  • LinkedIn
  • YouTube
Heroku is acompany

 © Salesforce.com

  • heroku.com
  • Terms of Service
  • Privacy
  • Cookies
  • Cookie Preferences