Heroku リクエストタイムアウトはアプリケーション側にも忘れずに

(本記事はしくじり案件です)

Heroku Router は、dynoとの接続確立後30秒の間に何かしらレスポンスを受け取らなかった場合、リクエストを強制終了してしまう。そのため、Herokuアプリケーション側では30秒以内に処理を完了させておく必要がある。

処理自体を30秒以内に完了させるよう実装することは非常に重要なことではあるが、もう1つ大事なポイントがドキュメントに記載されている。

それはアプリケーション側でも、30秒(もしくはそれ以下)のタイムアウト処理を実装する必要がある、ということだ。

Request Timeout | Heroku Dev Center
Learn about the behavior of the Heroku routers, connection termination and connection timeouts.
接続が強制終了されると、クライアントに対してエラーページが発行されます。リクエストを処理していた Web dyno はそのまま放置され、応答を送信できなくてもリクエストの処理を続行します。
その後、後続のリクエストは同じプロセスに送られることがありますが、そのプロセスは (アプリケーションの言語またはフレームワークの並列性動作によっては) 応答できないため、さらなる悪化を引き起こします。

アプリケーション側でタイムアウト機能を実装(もしくは設定など)していないと、Heroku Routerはリクエストを強制終了しているのに、アプリケーション側は処理を継続していて無駄なリソース消費が発生してしまう。
しかも、Heroku Routerからさらに次のリクエストが投げられても処理できずに、さらなるパフォーマス悪化を引き起こす可能性がある、ということだ。

アプリケーション側でも、タイムアウトの設定は忘れずに。

Read more

heroku-applink

Heroku AppLinkの使い方 (クエリ)

Heroku AppLinkのサンプルコードがもう少し欲しいところ...で、まずはクエリのサンプルでも備忘録として残してみる ※サンプルコードは Node.js 版のSDKを使ったものに限定です。SDKのリポジトリは https://github.com/heroku/heroku-applink-nodejs を参照してください。 1. 1つのオブジェクトだけクエリする import * as salesforcesdk from "@heroku/applink"; const sfdc_id = 'xxxxx'; async function sample () { const sdk = salesforcesdk.init(); // ※Authorized Userを使います const org = await sdk.addons.applink.getAuthorization(process.env.HEROKU_

By Takahiro Yonei

生成AI

AI音声文字起こし

GPT-4o Transcribeちゃん(https://platform.openai.com/docs/models/gpt-4o-transcribe)、なかなかの認識精度でして、お気に入りでしたが、2,000 max output tokes という結構な縛りがありまして… 短い音声入れている間は気づかなかったのですが、12分ぐらいの音声を入れると、妙に出力が短くて、気づいたという… 提案段階で気づいてよかったわぁ "usage": { "type": "tokens", "total_tokens": 9714, "input_tokens": 7666, "input_token_details": { "text_tokens"

By Hiroki Matsumoto

heroku

Heroku Vibes pilotの発表

Dreamforce 2025直前にHerokuチームから凄そうなのがやってきた!Vibe Codingに振り回される私たちのメシアなのか、それとも更なるカオスなのか! Exciting news, developers and literally everyone else! We're launching the Heroku Vibes pilot, our game-changing collaborative agent. Get ready to #VibeCode your projects like never before. #HerokuVibes 🔗 https://t.co/fwsJ3TcuJo pic.twitter.com/cPOsA7RyYW — Heroku (@heroku) October 8, 2025 Welcome to Heroku

By Hiroki Matsumoto