phpのアプリケーションからService Busへアクセスする際にConnection time out エラーが発生します。

[email protected] 0 評価のポイント
2025-10-20T12:54:43.6233333+00:00

連携するファイル毎にphpのバッチプログラムAからService busのQueueへメッセージを送信してphpのバッチプログラムBがそのメッセージを取得してバッチ処理を行なっています。

29個のファイルを順番に連携しようとしてバッチプログラムを実行すると最初は発生しないですが、20番目の前後ファイルのバッチ処理で以下のエラーが偶に発生しています。
このエラーの原因を探していますが、何か思い当たるところがあればご教示お願いいたします。

cURL error 7: Failed to connect to xxxxxx.servicebus.windows.net port 443: Connection timed out (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)
Azure Service Bus
Azure Service Bus

サービスとしてのクラウド メッセージングとハイブリッド統合を提供する Azure サービス。


1 件の回答

並べ替え方法: 最も役に立つ
  1. Pravallika KV 18,855 評価のポイント Microsoft 外部スタッフ モデレーター
    2025-10-20T14:36:04.2233333+00:00

    こんにちは ******@cydas.com,

    解像度を共有してくれてありがとうございます。

    解決策:

    まずは指数バックオフRetryで回避するようにして最終的には接続やクライアントを再利用するようにバッチプログラムの改修を実施するようにします。

    cURL error 7: Failed to connect to xxxxxx.servicebus.windows.net port 443: Connection timed out (see 
    

    これは、PHPバッチプログラムA(メッセージを送信するもの)またはバッチプログラムB(メッセージを取得するもの)が、Azure Service Busのエンドポイントへの接続に断続的に失敗していることを指します。

    1. Azure Service Bus には、同時リクエストに対する制限や接続制限があります。
    • バッチジョブが各メッセージごとに新しい接続を開き、接続を再利用しない場合、約20接続に達すると、スロットリングや一時的な接続の切断が発生する可能性があります。

    バッチプログラムでは、メッセージごとに新しい接続を開くのではなく、接続やクライアントを再利用するようにしてください。Azure Service Bus を使用する場合は、単なる cURL 呼び出しではなく、接続プーリングをサポートする SDK を使用してください。

    1. 一時的なネットワークの不具合、ファイアウォールの制限、あるいはプロキシの制約により接続がタイムアウトすることがあります。また、ネットワーク経路が不安定で断続的な障害が発生している可能性もあります。
    2. バッチプログラムが多くの接続やCURLハンドルを適切に閉じたり再利用したりせずに開くと、ローカルシステムの一時ポートやソケットが枯渇する可能性があります。
    3. 時折、Azure サービス自体が一時的な問題を抱えたり、名前空間やサブスクリプションごとにクォータを適用したりすることがあります。
    • タイムアウトなどの一時的な障害に対しては、指数バックオフを用いたリトライを実装します。
    • ファイアウォール、プロキシ、またはVPNの設定が接続を制限したり遅延を引き起こしたりしていないことを確認します。

    お役に立てれば幸いです!


    「回答を承認」 をクリックし、はい を選択するのをお忘れなく。 これは他のコミュニティメンバーにも有益です。

    ユーザーの画像

    その他のご質問がありましたら、「コメント」 にてお知らせください。喜んでお手伝いいたします。

    この回答は役に立ちましたか?


お客様の回答

質問作成者は回答に "承認済み"、モデレーターは "推奨" とマークできます。これにより、ユーザーは作成者の問題が回答によって解決したことを把握できます。