全部产品
Search
文档中心

:Penanganan waktu habis koneksi jaringan

更新时间:Jun 26, 2025

Pendahuluan

Waktu habis koneksi jaringan adalah masalah umum yang sering dihadapi pengguna SDK OSS saat mengunggah file. Masalah ini menyebabkan kesalahan ConnectionTimeOut, yang berdampak negatif pada pengalaman pengguna.

Pemecahan Masalah

Berikut adalah analisis kemungkinan penyebab dan solusi untuk menangani waktu habis koneksi jaringan SDK OSS, karena masalah ini sulit direproduksi.

  1. Lingkungan Jaringan

    Analisis tautan jaringan:

    Telepon Genggam/PC --- Jaringan Operator --- Server OSS

    Jaringan Anda mungkin berada di node tepi jaringan operator, sehingga permintaan ke jaringan operator lebih rentan terhadap kegagalan. Untuk mengurangi ketergantungan pada jaringan operator, gunakan node tepi CDN sebagai akselerator. Tautan jaringannya menjadi:

    Telepon Genggam/PC -- Node Tepi CDN Terdekat -- Jaringan Operator -- Server OSS

    Jika masalah tetap ada dan kesalahan ConnectionTimeOut masih terjadi, tinjau analisis berikut.

  2. Konfigurasi Jaringan

    Berikut adalah detail pesan kesalahan waktu habis:

    "ConnectionTimeoutError&errormsg=Gagal mengunggah beberapa bagian dengan kesalahan: ConnectionTimeoutError: Koneksi timeout selama 60000ms, PUT https://***.oss-cn-hangzhou.aliyuncs.com/***/***/***.mp4?partNumber=2&uploadId=*** -2 (terhubung: false, keepalive socket: false)headers: {} part_num: 2

    Kesimpulan dari pesan kesalahan adalah sebagai berikut:

    • Koneksi gagal karena klien tidak menerima respons dari server dalam 60 detik.

    • Menurut log CDN, waktu habis terjadi karena jaringan terputus sebelum bagian sepenuhnya diunggah.

    • Dalam kondisi jaringan buruk, klien/PC tidak dapat menerima respons dari server OSS dalam waktu lama jika ukuran file terlalu besar.

    Berdasarkan kesimpulan tersebut, kami merekomendasikan solusi berikut:

    • Gunakan metode unggah multipart dengan membatasi ukuran maksimum bagian menjadi 1 MB.

    • Tambahkan mekanisme pemulihan untuk mengunggah ulang bagian yang gagal.

    • Perpanjang periode waktu habis.

    // Contoh kode unggah multipart di JS SDK
    
    let retryCount = 0;
    let retryCountMax = 3;
    ...
    const uploadFile = function uploadFile(client) {
      if (! uploadFileClient || Object.keys(uploadFileClient).length === 0) {
        uploadFileClient = client;
      }
      ...
    
      console.log(`${file.name} => ${key}`);
      const options = {
        progress,
        Partsize: 1000*1024, // Atur ukuran bagian.
        Timeout: 120000, // Atur periode waktu habis.
      };
      if (currentCheckpoint) {
        options.checkpoint = currentCheckpoint;
      }
      return uploadFileClient.multipartUpload(key, file, options).then((res) => {
        console.log('unggah sukses: %j', res);
        currentCheckpoint = null;
        uploadFileClient = null;
      }).catch((err) => {
        if (uploadFileClient && uploadFileClient.isCancel()) {
          console.log('hentikan unggah!');
        } else {
          console.error(err);
          //coba lagi
          if (retryCount < retryCountMax){
              retryCount++;
              console.error("retryCount : " + retryCount);
              uploadFile('');
          }
        }
      });
    };

Ringkasan

Jika Anda mengakses data OSS menggunakan nama domain OSS standar (misalnya, oss-cn-hangzhou.aliyuncs.com), akses dilakukan melalui jaringan operator. Dalam situasi ini, kesalahan ConnectionTimeOut dapat terjadi akibat lingkungan jaringan yang kompleks (seperti jaringan tidak stabil atau kondisi jaringan buruk). Solusi yang dapat dicoba antara lain:

  • Gunakan metode unggah multipart dengan membatasi ukuran bagian antara 100 KB hingga 1 MB.

    Catatan

    Server OSS tidak menerima bagian yang lebih kecil dari 100 KB.

  • Tambahkan mekanisme pemulihan untuk mengunggah ulang bagian yang gagal.

    Catatan

    Mekanisme ini diaktifkan secara default di Android/iOS SDK, sehingga tidak diperlukan konfigurasi tambahan.

  • Perpanjang periode waktu habis.

  • Gunakan layanan akselerasi CDN untuk mempercepat transmisi data di OSS.