このページは機械翻訳によるものです。内容の正確さは保証しておりません。 人力翻訳を依頼する

OSSバケットにアクセスしようとすると、ネットワーク例外が頻繁に発生します。 どうすればこれを修正できますか?

更新日時2023-12-15 01:42

ネットワーク例外は通常、正しくないエンドポイントを使用してObject Storage Service (OSS) にアクセスするか、クライアント側のネットワーク接続が不十分なために発生します。 このトピックでは、OSSのネットワーク例外のトラブルシューティング方法について説明します。

背景情報

OSSがリクエストに応答を返した場合、クライアントとOSS間の接続は正常です。 これは、応答のHTTPステータスコードが200でない場合でも当てはまります。 レスポンスにエラーが含まれている場合は、リクエストIDを使用してセルフサービス診断ツールでエラーをトラブルシューティングします。 リクエストIDの取得方法の詳細については、「リクエストIDの取得」をご参照ください。

このトピックでは、ネットワーク例外とは、リクエストがOSSによって受信される前にドロップされる問題を指します。 OSSがリクエストを受信したかどうかを確認するには、リクエストIDの取得を試みます。 IDを取得できる場合、リクエストはOSSによって受信されます。

接続拒否

原因

  • クライアントとOSSバケットが同じリージョンにあるわけではありません。 内部エンドポイントを介してOSSバケットにアクセスする場合、クライアントとバケットは同じリージョンに存在する必要があります。 たとえば、e oss-cn-hangzhou-internal.aliyuncs.comエンドポイントを使用して、同じリージョンのECS (Elastic Compute Service) インスタンスから中国 (杭州) リージョンのバケットにアクセスできます。 エンドポイントの詳細については、「リージョンおよびエンドポイント」をご参照ください。

  • クライアントはバケットと同じリージョンにありますが、クライアントの設定によりネットワーク例外が発生する可能性があります。 たとえば、特定のポートがクライアントで閉じられます。

ソリューション

  • クライアントに設定されたエンドポイントが内部エンドポイント ("internal" という単語を含む) であるかどうかを確認します。 存在する場合、エンドポイントをパブリックエンドポイントに切り替えます。 リクエストがパブリックエンドポイントを介して正常に送信された場合、クライアントは内部エンドポイントの使用をサポートしません。

  • pingコマンドを使用して、クライアントとバケットが配置されているリージョンのパブリックエンドポイント間のネットワーク接続をテストします。 たとえば、ピンg oss-cn-hangzhou.aliyuncs.comを使用して、クライアントと中国 (杭州) リージョンのOSS間のネットワーク接続をテストできます。 pingが失敗した場合は、telnetコマンドを使用して、ポート80または443が使用可能かどうかをテストします。

ConnectionTimeOut

原因

  • ネットワークはインターネットサービスプロバイダー (ISP) のエッジノードによって管理され、接続の問題によりリクエストがドロップされます。

  • ラージオブジェクトのアップロードは、設定されたタイムアウト期間内に完了しません。

  • 設定されたタイムアウト期間が短すぎます。

ソリューション

  • CDNアクセラレーションを有効にし、CDN POPを使用してデータ転送を高速化します。 これにより、ISPネットワークが携帯電話やPCのデータ転送品質に与える影響が軽減されます。

  • 大きなオブジェクトをアップロードする場合は、マルチパートアップロードまたは再開可能アップロードを使用し、各パーツのサイズが1 MB未満であることを確認します。 詳細については、「マルチパートアップロード」、「Javaでの再開可能アップロード」、および「Pythonでの再開可能アップロード」をご参照ください。

  • より長いタイムアウト期間を設定し、失敗したアップロードで再試行を有効にします。 さまざまなプログラミング言語のサンプルコードについては、「概要」をご参照ください。

接続タイムアウトのトラブルシューティング方法の詳細については、「ネットワーク接続タイムアウト処理」をご参照ください。

Socket timeoutまたはSocket closed

原因

接続がタイムアウトしました。

解決策

タイムアウトまでの時間を長くします。 たとえば、OSS SDK For JavaのClientConfiguration.setSocketTimeoutを使用して、ソケットレイヤーでのデータ送信のタイムアウト期間を設定できます。 さまざまなプログラミング言語のサンプルコードについては、「概要」をご参照ください。

接続リセット

原因

  • クライアント側のネットワーク接続が異常です。

  • 誤ったエンドポイントがコードで指定されています。

  • 攻撃またはコンテンツコンプライアンス違反により、アクセスするバケットがサンドボックスに移動されます。

  • バケットのドメイン名がハイジャックされました。

ソリューション

  • クライアント側のネットワーク接続が正常かどうかを確認します。

    pingコマンドを使用して、バケットが配置されているリージョンのクライアントとエンドポイント間のネットワーク接続をテストするか、Alibaba Cloud DNS診断ツールを使用してネットワーク接続を確認します。 ネットワーク接続が異常な場合は、接続を修正してリクエストを再試行してください。

  • コードのエンドポイントを確認します。

    クライアントネットワークが期待どおりに機能するかどうかを確認します。 エラーが発生したデバイスで、アクセスするOSSリソースが存在するリージョンのOSSエンドポイントにPingを実行します。 エンドポイントの詳細については、「リージョンおよびエンドポイント」をご参照ください。

    説明

    コードで指定されたエンドポイントの先頭にHTTPまたはHTTPS (https://oss-cn-hangzhou.aliyuncs.comなど) を付ける必要があります。

    さまざまなプログラミング言語のサンプルコードについては、「概要」をご参照ください。

  • バケットがサンドボックスに移動されているかどうかを確認します。

    バケットをサンドボックスに移動しても、バケットはリクエストに応答できますが、サービス品質は低下します。 詳細は、「OSSサンドボックス」をご参照ください。

  • トラブルシューティング用のパケットをキャプチャします。

    問題が解決しない場合は、Wiresharkツールを使用してパケットをキャプチャし、OSSに連絡してくださいテクニカルサポート

  • 目次 (1, M)
  • 背景情報
  • 接続拒否
  • ConnectionTimeOut
  • Socket timeoutまたはSocket closed
  • 接続リセット
フィードバック