Skip to content
Naoto Koshikawa edited this page Jun 6, 2013 · 3 revisions

Herokuのプラットフォームの様々なコンポーネントに課される制限についての記事です。この記事では、コネクション数など、制限についてのみ記載しています。データベースが持つ能力など機能の話には言及しません。

制限を設けるのには様々な理由があります。時に制限は、基盤となるプラットフォームが構築されている方法を理由として存在しています。例えば、Herokuは1500行以上のログの履歴を保持しません。(ロギング用のアドオンを介して、残りのログを利用することは可能です)。また時に制限、良いユーザーとしての振る舞いを強制します。APIのリクエストは1時間に1500回以内と決められています。

各制限事項は、別のドキュメントの制限に関するドキュメントをリンクしてあります。リンク先の記事でより多くの情報が得られるでしょう。

Logplex

ログの履歴制限

Herokuは最新の1500行のログしか保持しません。もしそれ以上を保持したい場合はherokuのsyslog drain機能を用いて自身でログを管理して下さい。

参照記事

ルーター

HTTPタイムアウト

最初のHTTPリクエストは30秒以内に応答データを返してください。(プロセスがアクティブであることを示すために完全な応答もしくは応答データの一部を返す必要があります。)プロセスが30秒以内に応答を返さないと、H12エラーがログに出力されます。

その後、55秒ごとにデータクライアントまたはプロセスからデータを送信する必要があります。もし55秒以上データの送信がない場合は、H15エラーがログに出力されます。

参照記事

HTTP レスポンスバッファリング

The router maintains a 1MB buffer for responses from the dyno per connection.

ルーターは、各コネクションごとのdynoからレスポンス用に1MBのバッファーを保持します。

参照記事

HTTP リクエストバッファリング

リクエストを処理する際、ルータは8KBのバッファを確保します。HTTPリクエストの各行とヘッダはそれぞれ8KBの長さまで許容されますが合わせて8KB以内に収まる必要があります。もしそれ以上のデータを含むリクエストが有った場合は、そのリクエストはディスパッチ前にルーターでドロップされます。

参照記事

Dynos

Dyno メモリ

各 dyno のメモリは512MBです。

参照記事

one-off dyneのタイムアウト

heroku run コマンドなどで利用される一時的なdynoのコネクションは1時間以上、非アクティブな状態が続くと切断されます。そのとき、dyneのあSIGHUPシグナルを創出します。このアイドルタイムアウトは、非アクティブなセッションを開きっぱなしにしたことによる課金を防いでくれます。

参照記事

環境変数

環境変数データの容量は、キーと値を含めて各アプリごとに16kbまでです。

参照記事

起動タイムアウト

dynoのwebプロセスが$PORTにアサインされるまでに60秒以上かかる場合はプロセスがKILLされます。

参照記事

終了タイムアウト

dynoがKILLされた、または再起動された場合、その中のプロセスは10秒以内にSIGTERMを受け取ります。この10秒が過ぎるとそのプロセスはSIGKILLシグナルを受け取り強制的に終了します。

参照記事

Dyno メモリ再起動

dynoのメモリサイズが三倍にまで達した場合、R15エラーを出力しdynoは再起動します。

参照記事

Dyno 再起動制限

10分に1度、クラッシュしたdynoの再起動を試みます。起動失敗するようなコードをpushしてしまった場合、dynoは一旦起動してから10分後にまた再起動するということです。通常のケースでは、長時間のプロセスがクラッシュを引き起こした場合、勝手に再起動が行われます。ただし2回連続再起動に失敗した場合は10分間ダウンしたままとなります。

参照記事

Dyno スケール

デフォルトでは、dynoのスケールは100までです。それ以上のdynoを希望の場合はサポートへ連絡して下さい。

参照記事

プロセス / スレッド

1つのdynoに1度に256までのプロセス / スレッド(どんな状態のものも含む)が生成できます。この制限はプロセス数とスレッド数の合計値であることに注意して下さい。 255スレッドと1プロセスであれば、256プロセスと数えます。

参照記事

ビルド

Slug size

コンパイル後のslugサイズは200MBです。殆どのアプリはこの制限に収まるでしょう。

参照記事

Slug コンパイル

Slug コンパイルは15以内です。

参照記事

Heroku Postgres

Dataclips row limits

Dataclips が返す行は29,999 行までです。

Source

Dataclips query limit timeout

Dataclips 10秒以上かかるクエリをキャンセルします。この値は変更可能です。

参照記事

Production層

  • 最大 500 コネクション
  • ストレージ容量: 1TB
  • メモリキャッシュが可能(size dependent on plan)

参照記事

スターとアップ層

  • devは10,000 行、basicプランは 10,000,000行までしか参照できない。
  • 最大20コネクション
  • メモリキャッシュは利用不可

参照記事

API

Heroku API limits

Heroku APIは1時間に1200回まで実行出来ます。

参照記事

Clone this wiki locally