こんにちは、トモイさん。
Azure Synapse Analytics Dedicated SQL Poolに対する日々の推論バッチ処理中に発生する間欠的なTCPプロバイダーエラーの詳細を共有していただきありがとうございます。
現在の情報に基づくと、複数の推論モデルが同時に実行され、PythonアプリケーションがODBCドライバー17 for SQL Serverを使ってpyodbc経由で接続している間に、故障が発生しています。
分析
TCPプロバイダー/接続リセットエラーは、クライアントとSQLエンドポイント間の確立または試みられた接続が中断されたことを示します。しかし、このエラーだけではどのコンポーネントが中断を引き起こしたかは特定できません。
このシナリオでは、以下のエリアを隔離することをお勧めします。
- 一時的な接続障害
この問題は永続的な接続不能ではなく断続的なものであるため、アプリケーションは一時的な接続障害や切断に対応できるよう準備しておくべきです。
作業量/リソースプレッシャー
複数のモデルが並行して動作しているときに問題が観察されるため、故障時間と専用SQLプールのワークロード指標を関連付け、リソース利用率が高いか、多数のキューイングリクエストがあるかを確認してください。
隔離テストとして、一時的に同時モデル実行数を減らし、TCPエラーが続くか確認してください。
ネットワーク接続
ポート1433のSynapse SQLエンドポイントへのTCP接続が許可されていること、そして接続パス内のファイアウォール、VNet、ネットワークセキュリティデバイス、その他のコンポーネントがセッションを妨害していないか確認してください。
ドライバー検証
ODBC Driver 17の正確なインストールビルドを確認し、クライアントが現在サポートされているMicrosoft ODBCドライバーバージョンを使用しているか確認してください。
接続とタイムアウトの設定
pyodbcの接続ライフサイクルとタイムアウト設定を確認してください。接続は終了後に再利用しないでください。Microsoftはまた、Synapse SQLプールに接続するアプリケーションに対して少なくとも15秒のサインインタイムアウトを推奨しています。
推奨される緩和策
即時の緩和策として、以下のことを推奨します。
1. リトライロジックの実装
一時的なSQL接続障害に対して再試行/再接続ロジックを実装します。TCP接続が終了したら、失敗した接続を使い続けるのではなく、新しい接続を作成しましょう。
2. 並行性を減らしたテスト
同時に実行される推論モデルや接続の数を一時的に減らしましょう。
同時処理が減少した際に故障が停止または大幅に変化した場合、この結果を用いてワークロード/リソース利用率と接続障害の関係をさらに調査できます。
3. 専用SQLプールのリソース利用状況のレビュー
Azure Monitorの正確な障害期間に関する指標を確認し、CPU、メモリ、ローカルtempdb使用状況、ワークロード活動、キューイングリクエストを確認してください。
4. Azureの健康情報を検証する
正確な故障タイムスタンプについては、以下を確認してください:
Azure Resource Health
問題の診断と解決
Azure Service Health
専用SQLプールが一時停止、スケーリング中、またはその他の方法で利用できない場合
5. ネットワークパスの検証
TCP 1433経由でSynapse SQLエンドポイントへの接続を確認し、クライアント環境およびSynapseエンドポイントに関連するファイアウォール/VNetの設定を確認してください。
6. クライアントドライバーと接続設定の確認
現在インストールされている正確なODBCドライバー17ビルドを確認し、接続文字列とタイムアウト設定を確認してください。Microsoftのドキュメントには、接続タイムアウト300秒が短期間の利用不可に対応するのに役立つと記載されています。
さらなるRCAに必要な情報
もし同じ問題が再び起きた場合は、同じ出来事から以下の内容を撮影してください:
完全なpyodbc例外/エラーメッセージ
SQLSTATE
ネイティブエラー番号
正確なタイムスタンプ(タイムゾーンを含む)
Synapse SQL プール名
当時の同時接続モデル数
操作を再試行することで新しい接続が成功するかどうか
これらの詳細により、クライアント側のエラーとリソース利用率、Azureの健康情報、ネットワーク経路との相関関係が可能になります。
現時点では、問題がAzure Synapseプラットフォーム自体によって引き起こされたと結論づける十分な証拠はありません。したがって、根本原因はクライアントのエラー詳細と対応するAzure/ネットワークのテレメトリが相関されるまで調査を続けるべきです。
ありがとうございます、シヴァサンカル・イェドゥラ サポートエンジニア |Azure SQL データベース 月曜〜金曜 |午前6時30分から午後3時30分 IST テックアドバイザー |デヴァラム・ハリカ |エイリアスマネージャー |スリテジャ・アドゥスミリ |エイリアスこんにちは、トモイさん、
Azure Synapse Analytics Dedicated SQL Poolに対する日々の推論バッチ処理中に発生する間欠的なTCPプロバイダーエラーの詳細を共有していただきありがとうございます。
現在の情報に基づくと、複数の推論モデルが同時に実行され、PythonアプリケーションがODBCドライバー17 for SQL Serverを使ってpyodbc経由で接続している間に、故障が発生しています。
分析
TCPプロバイダー/接続リセットエラーは、クライアントとSQLエンドポイント間の確立または試みられた接続が中断されたことを示します。しかし、このエラーだけではどのコンポーネントが中断を引き起こしたかは特定できません。
このシナリオでは、以下のエリアを隔離することをお勧めします。
一時的な接続障害
この問題は永続的な接続不能ではなく断続的なものであるため、アプリケーションは一時的な接続障害や切断に対応できるよう準備しておくべきです。
作業量/リソースプレッシャー
複数のモデルが並行して動作しているときに問題が観察されるため、故障時間と専用SQLプールのワークロード指標を関連付け、リソース利用率が高いか、多数のキューイングリクエストがあるかを確認してください。
隔離テストとして、一時的に同時モデル実行数を減らし、TCPエラーが続くか確認してください。
ネットワーク接続
ポート1433のSynapse SQLエンドポイントへのTCP接続が許可されていること、そして接続パス内のファイアウォール、VNet、ネットワークセキュリティデバイス、その他のコンポーネントがセッションを妨害していないか確認してください。
ドライバー検証
ODBC Driver 17の正確なインストールビルドを確認し、クライアントが現在サポートされているMicrosoft ODBCドライバーバージョンを使用しているか確認してください。
接続とタイムアウトの設定
pyodbcの接続ライフサイクルとタイムアウト設定を確認してください。接続は終了後に再利用しないでください。Microsoftはまた、Synapse SQLプールに接続するアプリケーションに対して少なくとも15秒のサインインタイムアウトを推奨しています。
推奨される緩和策
即時の緩和策として、以下のことを推奨します。
1. リトライロジックの実装
一時的なSQL接続障害に対して再試行/再接続ロジックを実装します。TCP接続が終了したら、失敗した接続を使い続けるのではなく、新しい接続を作成しましょう。
2. 並行性を減らしたテスト
同時に実行される推論モデルや接続の数を一時的に減らしましょう。
同時処理が減少した際に故障が停止または大幅に変化した場合、この結果を用いてワークロード/リソース利用率と接続障害の関係をさらに調査できます。
3. 専用SQLプールのリソース利用状況のレビュー
Azure Monitorの正確な障害期間に関する指標を確認し、CPU、メモリ、ローカルtempdb使用状況、ワークロード活動、キューイングリクエストを確認してください。
4. Azureの健康情報を検証する
正確な故障タイムスタンプについては、以下を確認してください:
Azure Resource Health
問題の診断と解決
Azure Service Health
専用SQLプールが一時停止、スケーリング中、またはその他の方法で利用できない場合
5. ネットワークパスの検証
TCP 1433経由でSynapse SQLエンドポイントへの接続を確認し、クライアント環境およびSynapseエンドポイントに関連するファイアウォール/VNetの設定を確認してください。
6. クライアントドライバーと接続設定の確認
現在インストールされている正確なODBCドライバー17ビルドを確認し、接続文字列とタイムアウト設定を確認してください。Microsoftのドキュメントには、接続タイムアウト300秒が短期間の利用不可に対応するのに役立つと記載されています。
さらなるRCAに必要な情報
もし同じ問題が再び起きた場合は、同じ出来事から以下の内容を撮影してください:
完全なpyodbc例外/エラーメッセージ
SQLSTATE
ネイティブエラー番号
正確なタイムスタンプ(タイムゾーンを含む)
Synapse SQL プール名
当時の同時接続モデル数
操作を再試行することで新しい接続が成功するかどうか
これらの詳細により、クライアント側のエラーとリソース利用率、Azureの健康情報、ネットワーク経路との相関関係が可能になります。
現時点では、問題がAzure Synapseプラットフォーム自体によって引き起こされたと結論づける十分な証拠はありません。したがって、根本原因はクライアントのエラー詳細と対応するAzure/ネットワークのテレメトリが相関されるまで調査を続けるべきです。
専用SQLプールの接続問題をトラブルシューティングし、Azure SynapseのSQLプールに接続してください