全部产品
Search
文档中心

ApsaraDB for MongoDB:Uji stres untuk jumlah maksimum koneksi ke instance replika

更新时间:Jul 06, 2025

Topik ini menjelaskan cara melakukan uji stres untuk jumlah maksimum koneksi ke beberapa instance ApsaraDB for MongoDB replika dengan spesifikasi berbeda. Pengujian dilakukan dengan mengakses instance ApsaraDB for MongoDB dari sebuah Instance ECS (Elastic Compute Service).

Lingkungan pengujian

Buat sebuah Instance ECS dan sebuah instance ApsaraDB for MongoDB. Untuk informasi lebih lanjut, lihat Buat Instance Replika dan Buat Instance ECS.

Tabel berikut menjelaskan konfigurasi Instance ECS dan instance ApsaraDB for MongoDB yang digunakan dalam pengujian.

Item konfigurasi

ECS Instance

Instance ApsaraDB for MongoDB yang menggunakan disk cloud

Instance ApsaraDB for MongoDB yang menggunakan disk lokal

Wilayah dan zona

Beijing Zona H

Beijing Zona H

Beijing Zona H

Jenis jaringan

Virtual Private Cloud (VPC)

VPC

VPC

Kategori instance

c6e, keluarga instans yang dioptimalkan untuk komputasi dengan performa ditingkatkan

Tujuan umum dan spesifikasi khusus

Tujuan umum dan spesifikasi khusus

Tipe instance

ecs.c6e.2xlarge

Tiga tipe instance tersedia. Untuk informasi lebih lanjut, lihat Hasil pengujian.

Dua tipe instance tersedia. Untuk informasi lebih lanjut, lihat Hasil pengujian.

Jenis penyimpanan

Enterprise SSD (ESSD) AutoPL disks

ESSDs

Local SSDs

Gambar atau versi mesin

Alibaba Cloud Linux 3.2104 LTS 64-bit

4.19.91-26.al7.x86_64

3.10.0-327.ali2017.alios7.x86_64

Versi kernel

N/A

  • Versi utama: MongoDB 4.4

  • Baseline versi minor: 4.4.28

  • Versi utama: MongoDB 4.2

  • Baseline versi minor: 4.2.23

  • Instance ApsaraDB for MongoDB yang digunakan dalam pengujian mengadopsi arsitektur tiga node yang terdiri dari node primer, node sekunder, dan node tersembunyi.

  • Instance ECS dan instance ApsaraDB for MongoDB yang digunakan dalam pengujian ditempatkan di zona yang sama di wilayah yang sama, dengan rata-rata Round-Trip Time (RTT) sebesar 0,103 ms.

Alat pengujian

  • Alat Yahoo Cloud Serving Benchmark (YCSB) versi 0.17.0 open-source digunakan dalam pengujian.

    Catatan

    YCSB adalah alat Java yang dapat digunakan untuk membandingkan performa berbagai jenis database. Untuk informasi lebih lanjut tentang cara menginstal dan menggunakan YCSB, lihat YCSB.

  • Program uji stres koneksi kustom digunakan dalam pengujian. Untuk informasi lebih lanjut, lihat Informasi Tambahan tentang Uji Stres untuk 96.000 Koneksi.

Metode pengujian

  1. Tambahkan primary private IP address dari instance ECS ke daftar putih instance ApsaraDB for MongoDB. Untuk informasi lebih lanjut, lihat Ubah Daftar Putih untuk Instance.

    Catatan

    Anda dapat masuk ke Konsol ECS dan melihat Primary Private IP Address dari instance ECS di bagian Configuration Information halaman Instance Details.

  2. Hubungkan ke instance ECS. Untuk informasi lebih lanjut, lihat Buat dan Kelola Instance ECS Menggunakan Konsol ECS (Versi Ekspres).

  3. Gunakan alat YCSB untuk memuat data uji.

    // Jalankan perintah ycsb run.
    ./bin/ycsb.sh load mongodb -s -p workload=site.ycsb.workloads.CoreWorkload -p recordcount=10000000 -p mongodb.url="mongodb://test:****@dds-bp13e84d11****.mongodb.rds.aliyuncs.com:3717/admin" -p table=test -threads 8

    Modifikasi pengaturan berikut:

    • recordcount=1.000.000: jumlah total data yang dimuat ke instance ApsaraDB for MongoDB.

    • mongodb.url="mongodb://test:****@dds-bp13e84d11****.mongodb.rds.aliyuncs.com:3717/admin": string koneksi instance ApsaraDB for MongoDB. Dalam pengujian, akun database adalah test dan database adalah admin.

      Catatan

      Anda dapat memperoleh titik akhir di bagian Internal Connections - VPC halaman Database Connections di Konsol ApsaraDB for MongoDB.

    • threads 8: jumlah thread konkuren pada klien yang digunakan dalam pengujian.

  4. Jalankan perintah berikut untuk melakukan uji stres performa:

    ./bin/ycsb.sh run mongodb -s -p workload=site.ycsb.workloads.CoreWorkload -p recordcount=10000000 -p operationcount=5000000 -p readproportion=50 -p updateproportion=50 -p requestdistribution=zipfian -p mongodb.url="mongodb://test:****@dds-bp13e84d11****.mongodb.rds.aliyuncs.com:3717/admin&maxPoolSize=8000" -p table=test -threads 8000

    Modifikasi pengaturan berikut:

    • recordcount=1.000.000: jumlah total data yang dimuat ke instance ApsaraDB for MongoDB.

    • operationcount=5.000.000: jumlah total operasi baca dan tulis.

    • insertproportion=0: rasio operasi muat.

    • readproportion=50: rasio operasi baca.

    • updateproportion=50: rasio operasi pembaruan.

    • mongodb.url="mongodb://test:****@dds-bp13e84d11****.mongodb.rds.aliyuncs.com:3717/admin": string koneksi instance ApsaraDB for MongoDB. Dalam pengujian, akun database adalah test dan database adalah admin.

      Catatan
      • Anda dapat memperoleh titik akhir di bagian Internal Connections - VPC halaman Database Connections di Konsol ApsaraDB for MongoDB.

      • Saat menjalankan perintah sebelumnya, Anda harus mengonfigurasi parameter maxPoolSize. Jika tidak, jumlah koneksi default adalah 100. Dalam kasus ini, kesalahan MongoWaitQueueFullException akan dikembalikan selama pengujian, dan jumlah maksimum koneksi yang diharapkan tidak dapat dicapai.

  5. Lihat informasi pemantauan instance ApsaraDB for MongoDB yang digunakan dalam pengujian. Untuk informasi lebih lanjut, lihat Pemantauan Node (Sebelumnya Pemantauan Dasar).

    Pada tab Pemantauan Node, pilih periode waktu yang sesuai dengan pengujian untuk melihat metrik CPU Utilization, Memory Usage, QPS, Connections, dan Connection Utilization.

Informasi tambahan tentang uji stres untuk 96.000 koneksi

Uji YCSB bergantung pada lingkungan Java. Ukuran heap memori maksimum mesin virtual Java (JVM) dibatasi. Jika pengujian menggunakan lebih dari 20.000 thread konkuren, kesalahan Cannot allocate memory akan dikembalikan, yang mengganggu pengujian.image

Setelah Anda meningkatkan nilai parameter JAVA_OPTS, kesalahan tersebut masih terjadi. Untuk menyelesaikan masalah, gunakan program uji stres koneksi kustom. Program uji stres siklikal menghasilkan beberapa thread. Setiap thread menghasilkan MongoClient. Setelah MongoClient melakukan query, MongoClient mempertahankan koneksi selama periode waktu tanpa dilepaskan.

Sebuah mesin tunggal tempat klien uji stres berjalan memiliki jumlah port terbatas. Oleh karena itu, mesin tidak dapat memenuhi persyaratan uji stres koneksi (hingga 96.000 koneksi) dengan spesifikasi 32 core dan 128 GB memori. Dalam kasus ini, Anda harus menjalankan program uji stres yang sama di beberapa mesin.

Jalankan perintah Bash berikut untuk menanyakan rentang port saat ini dari mesin:

sysctl net.ipv4.ip_local_port_range

Contoh hasil:

net.ipv4.ip_local_port_range = 40000    65535

Jalankan perintah berikut untuk memperluas rentang port mesin dan kemudian lakukan uji stres koneksi:

sudo sysctl -w net.ipv4.ip_local_port_range="10240 65535"

Hasil pengujian

Instance yang menggunakan ESSD

Instance khusus dengan 4 core dan 8 GB memori

Jumlah maksimum koneksi: 8.000

QPS

Koneksi

Utilisasi koneksi

Utilisasi CPU

Penggunaan memori

image.png

image.png

image.png

image.png

image.png

Catatan

Jika Anda memilih granularitas koleksi pada level menit di tab Pemantauan Node, jumlah maksimum koneksi yang dicapai dalam granularitas tersebut tidak dapat ditampilkan di tab. Jumlah koneksi aktual mencapai 8.000. Hal ini dapat dikonfirmasi dengan mengonfigurasi pemantauan granular atau melihat sub-dokumen connections dalam output perintah serverStatus.image

Instance khusus dengan 32 core dan 128 GB memori

Jumlah maksimum koneksi: 96.000

QPS

Koneksi

Utilisasi koneksi

Utilisasi CPU

Penggunaan memori

image.png

image.png

image.png

image.png

image.png

Catatan

Alat yang digunakan dalam pengujian ketika jumlah maksimum koneksi adalah 96.000 berbeda dari alat yang digunakan dalam pengujian ketika jumlah maksimum koneksi adalah 8.000 dan 16.000. Oleh karena itu, tangkapan layar pemantauan terkait QPS, utilisasi CPU, dan penggunaan memori memiliki perbedaan.

Instance tujuan umum dengan 8 core dan 32 GB memori

Jumlah maksimum koneksi: 16.000

QPS

Koneksi

Utilisasi koneksi

Utilisasi CPU

Penggunaan memori

image.png

image.png

image.png

image.png

image.png

Instance yang menggunakan disk lokal

Instance tujuan umum dengan 16 core dan 64 GB memori

Jumlah maksimum koneksi: 32.000

QPS

Koneksi

Utilisasi koneksi

Utilisasi CPU

Penggunaan memori

image.png

image.png

image.png

image.png

image.png

Catatan

Jika Anda menentukan granularitas koleksi pada level menit di tab Pemantauan Node, jumlah koneksi pada beberapa titik waktu tidak dipantau untuk instance tujuan umum dengan 16 core dan 64 GB memori karena timeout perintah koleksi yang disebabkan oleh utilisasi CPU 100%. Dalam kasus ini, lembah level menit terjadi, dan jumlah koneksi aktual pada titik-titik waktu tersebut tetap 32.000.

Instance khusus dengan 2 core dan 16 GB memori

Jumlah maksimum koneksi: 8.000

QPS

Koneksi

Utilisasi koneksi

Utilisasi CPU

Penggunaan memori

image.png

image.png

image.png

image.png

image.png

Ringkasan

  • ApsaraDB for MongoDB instance replika dengan spesifikasi dan jenis penyimpanan berbeda dapat mencapai jumlah maksimum koneksi sesuai dengan spesifikasinya.

  • Setelah jumlah maksimum koneksi tercapai, ApsaraDB for MongoDB menolak koneksi berikutnya. Permintaan memiliki latensi tinggi atau macet di aplikasi Anda karena kegagalan dalam menetapkan koneksi.

  • Jumlah koneksi konkuren yang lebih besar mengonsumsi lebih banyak sumber daya seperti CPU dan memori. Kami merekomendasikan agar Anda menyesuaikan jumlah koneksi ke instance Anda berdasarkan kebutuhan bisnis Anda.