すべてのプロダクト
Search
ドキュメントセンター

Tablestore:Tablestore Java SDK による SocketTimeoutException

最終更新日:May 07, 2026

ネットワーク障害、ネットワークジッター、サーバー側の高負荷、またはクライアント側でのフルガベージコレクション (GC) イベントにより、Tablestore へのアクセス時にクライアントがタイムアウトすることがあります。クライアントがタイムアウトした場合は、ネットワーク接続、サーバー側のレイテンシー、およびクライアント側のフル GC の問題を確認してトラブルシューティングを行ってください。

症状

Java SDK を使用して Tablestore にアクセスする際に、Unexpected error: java.net.SocketTimeoutException というエラーが発生する場合があります。以下はエラーメッセージの例です。

content: 11:56:48.072 WARN  com.alicloud.openservices.tablestore.core.utils.LogUtil - TraceId:4bc30ca1-f112-2d52-d8b1-61a95072eda5	Failed	RetriedCount:1	com.alicloud.openservices.tablestore.ClientException: Unexpected error: java.net.SocketTimeoutException

原因

このエラーは、リクエストからレスポンスまでの時間が socketTimeoutInMillisecond パラメーターの値を超えた場合に発生します。このパラメーターのデフォルト値は 30,000 ミリ秒です。

説明

通常の条件下では、socketTimeoutInMillisecond の値を過度に低く設定しないでください。ClientConfiguration でこの値を設定できます。

考えられる原因は以下のとおりです。

  • クライアントでフル GC イベントが発生している。

  • ネットワーク障害やネットワークジッターなどのネットワーク問題が発生している。

  • サーバー側のレイテンシーが高くなり、socketTimeoutInMillisecond の値を超えている。

ソリューション

  1. クライアント側のフル GC の問題を確認します。

    jmap や jcmd などのツールを使用して JVM のメモリ使用量を確認し、メモリ不足 (OOM) エラーがないかをチェックします。

    OOM エラーが発生すると、HttpClient のバックグラウンド I/O スレッドが予期せず終了する可能性があります。これを解決するには、以下のいずれかの対応を行ってください。

    • メモリ使用量が異常である、またはメモリリークが存在する場合は、コードを最適化します。

    • メモリ使用量は妥当だがマシンのリソースが不足している場合は、使用可能なメモリを増やします。

    • マシンがアイドル状態でメモリ使用量が低い場合は、JVM ヒープメモリを増やしてフル GC イベントの発生頻度を下げます。

    また、マシンの負荷が高い、ネットワークエラー率が高い、または CPU 使用率が高い場合にも SocketTimeoutException が発生することがあります。このような状況では、リクエストが送信される前にタイムアウトする可能性があります。

  2. クライアントとサーバー間のネットワーク接続を確認します。

    すべてのリクエストで SocketTimeoutException が発生する場合は、ネットワーク障害が原因である可能性が高いです。ping コマンドまたは curl コマンドを使用してネットワークの問題をテストします。

    以下の例はテストの実行方法を示しています。myinstance はご利用の Tablestore インスタンス名に置き換えてください。

    ping myinstance.cn-hangzhou.ots.aliyuncs.com
    curl myinstance.cn-hangzhou.ots.aliyuncs.com
    • ネットワーク障害が確認された場合は、ECS 環境外で内部エンドポイントを使用している可能性があります。正しいエンドポイントを使用していることを確認してください。エンドポイントの詳細については、「エンドポイント」をご参照ください。

      クライアントが ECS インスタンスから Tablestore にアクセスする場合は、VPC またはクラシックネットワーク経由で接続します。

    • ネットワーク接続は確立されているがタイムアウトが継続する場合は、ネットワークジッターによってレイテンシーが高くなっている可能性があります。トラフィック量の増加、帯域幅の不足、パケット再送率の上昇がないかを確認してください。著しいネットワークジッターが検出された場合は、ネットワークサポートに連絡してください。

  3. Tablestore コンソールでサーバー側のレイテンシーを確認するには、次の手順に従います。

    1. Tablestore コンソールにログインします。

    2. 上部のナビゲーションバーでリソースグループとリージョンを選択します。

    3. 概要ページで、インスタンス一覧からご利用のインスタンス名をクリックします。

    4. インスタンスの詳細タブのテーブルリストエリアで、データテーブル名をクリックします。

    5. テーブル管理ページで、モニタリングタブをクリックします。その後、テーブルまたはインデックスを選択し、時間範囲を指定して、区分平均レイテンシに設定し、操作タイプごとの平均レイテンシーを確認します。

      サーバー側のレイテンシーが socketTimeoutInMillisecond の値を超えている場合は、Tablestore テクニカルサポートにチケットを送信してください。

      fig_20220217_mointor