Verifikasi bahwa instans set replika ApsaraDB for MongoDB dengan spesifikasi berbeda dapat mencapai jumlah koneksi maksimumnya melalui uji stres yang dijalankan dari sebuah Instance ECS yang mengakses instans ApsaraDB for MongoDB dalam VPC yang sama.
Lingkungan pengujian
Buat sebuah Instance ECS dan sebuah instans set replika ApsaraDB for MongoDB. Buat instans set replika dan Buat Instance ECS.
Tabel berikut mencantumkan konfigurasi instans yang digunakan dalam pengujian ini.
|
Item konfigurasi |
Instance ECS |
Instans ApsaraDB for MongoDB yang menggunakan cloud disk |
Instans ApsaraDB for MongoDB yang menggunakan local disk |
|
Wilayah dan zona |
Zona H Beijing |
Zona H Beijing |
Zona H Beijing |
|
Jenis jaringan |
Virtual Private Cloud (VPC) |
VPC |
VPC |
|
Kategori instans |
c6e, keluarga instans yang dioptimalkan untuk komputasi dengan peningkatan performa |
Tujuan umum dan spesifikasi khusus |
Tujuan umum dan spesifikasi khusus |
|
Tipe instans |
ecs.c6e.2xlarge |
Tiga tipe instans diuji. Hasil pengujian. |
Dua tipe instans diuji. Hasil pengujian. |
|
Jenis penyimpanan |
Disk Enterprise SSD (ESSD) AutoPL |
ESSD |
Local SSD |
|
Versi image atau engine |
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 |
|
|
-
Instans ApsaraDB for MongoDB menggunakan arsitektur tiga node: primary, secondary, dan hidden.
-
Instance ECS dan ApsaraDB for MongoDB berada dalam zona yang sama, dengan RTT rata-rata 0,103 ms.
Tool pengujian
-
YCSB (Yahoo Cloud Serving Benchmark) 0.17.0.
CatatanYCSB adalah tool benchmarking database berbasis Java. Untuk instalasi dan penggunaan, lihat YCSB di GitHub.
-
Program uji stres koneksi kustom. Informasi tambahan mengenai uji stres untuk 96.000 koneksi.
Metode pengujian
Tambahkan primary private IP address dari Instance ECS ke daftar putih instans ApsaraDB for MongoDB. Untuk informasi selengkapnya, lihat Ubah daftar putih.
CatatanAnda dapat login ke Konsol ECS dan melihat Primary Private IP Address Instance ECS pada bagian Configuration Information di halaman Instance Details.
Hubungkan ke Instance ECS. Untuk informasi selengkapnya, lihat Buat dan kelola Instance ECS menggunakan Konsol ECS (versi ekspres).
-
Gunakan tool YCSB untuk memuat data pengujian.
./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 8Modifikasi pengaturan berikut:
-
recordcount=1000000: total catatan yang dimuat ke instans ApsaraDB for MongoDB. -
mongodb.url="mongodb://test:****@dds-bp13e84d11****.mongodb.rds.aliyuncs.com:3717/admin": string koneksi instans ApsaraDB for MongoDB. Akun:test, database:admin.CatatanLogin ke Konsol ApsaraDB for MongoDB. Pada halaman Database Connection, temukan string koneksi di bagian Internal Connections - VPC.
-
threads 8: jumlah thread Klien konkuren.
-
-
Jalankan uji stres:
./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 8000Modifikasi pengaturan berikut:
-
recordcount=1000000: total catatan yang dimuat ke instans ApsaraDB for MongoDB. -
operationcount=5000000: total operasi baca dan tulis. -
insertproportion=0: rasio insert. -
readproportion=50: rasio baca. -
updateproportion=50: rasio update. -
mongodb.url="mongodb://test:****@dds-bp13e84d11****.mongodb.rds.aliyuncs.com:3717/admin": string koneksi instans ApsaraDB for MongoDB. Akun:test, database:admin.Catatan-
Masuk ke Konsol ApsaraDB for MongoDB. Pada halaman Database Connection, temukan string koneksi di bagian Internal Connections - VPC.
-
Anda harus menentukan parameter
maxPoolSize. Jika tidak, nilai default 100 akan diterapkan, yang dapat menyebabkan errorMongoWaitQueueFullExceptiondan mencegah pengujian mencapai jumlah koneksi maksimum yang ditargetkan.
-
-
-
Lihat data pemantauan. Pemantauan Node (sebelumnya pemantauan dasar).
Pada tab Node Monitoring, pilih rentang waktu pengujian dan lihat metrik CPU Utilization, Memory Usage, QPS, Connections, dan Connection Usage.
Informasi tambahan mengenai uji stres untuk 96.000 koneksi
YCSB bergantung pada Java. Memori heap JVM terbatas, sehingga pengujian dengan lebih dari 20.000 thread bersamaan menghasilkan error Cannot allocate memory.
Menambahkan JAVA_OPTS tidak menyelesaikan masalah ini. Gunakan program uji stres kustom sebagai gantinya: program tersebut secara siklik menghasilkan thread, masing-masing membuat MongoClient yang melakukan kueri dan mempertahankan koneksi tanpa melepaskannya.
Satu client uji stres memiliki jumlah port terbatas dan tidak dapat mencapai 96.000 koneksi (yang dibutuhkan untuk spesifikasi 32-core 128 GB). Jalankan program yang sama di beberapa mesin.
Kueri rentang port saat ini:
sysctl net.ipv4.ip_local_port_range
Contoh output:
net.ipv4.ip_local_port_range = 40000 65535
Perluas rentang port sebelum pengujian:
sudo sysctl -w net.ipv4.ip_local_port_range="10240 65535"
Hasil pengujian
Instans yang menggunakan ESSD
Instans spesifikasi khusus dengan 4 core dan memori 8 GB
Jumlah koneksi maksimum: 8.000
|
QPS |
Connections |
Connection utilization |
CPU utilization |
Memory usage |
|
|
|
|
|
|
Granularitas per menit pada tab Node Monitoring mungkin tidak menampilkan jumlah koneksi puncak. Koneksi aktual mencapai 8.000, yang dapat diverifikasi melalui pemantauan granular atau sub-dokumen connections dalam output serverStatus.
Instans spesifikasi khusus dengan 32 core dan memori 128 GB
Jumlah koneksi maksimum: 96.000
|
QPS |
Connections |
Connection utilization |
CPU utilization |
Memory usage |
|
|
|
|
|
|
Pengujian 96.000 koneksi menggunakan tool yang berbeda dari pengujian 8.000 dan 16.000 koneksi, sehingga metrik QPS, CPU, dan memori tidak dapat dibandingkan secara langsung.
Instans tujuan umum dengan 8 core dan memori 32 GB
Jumlah koneksi maksimum: 16.000
|
QPS |
Connections |
Connection utilization |
CPU utilization |
Memory usage |
|
|
|
|
|
|
Instans yang menggunakan local disk
Instans tujuan umum dengan 16 core dan memori 64 GB
Jumlah koneksi maksimum: 32.000
|
QPS |
Connections |
Connection utilization |
CPU utilization |
Memory usage |
|
|
|
|
|
|
Dengan granularitas per menit, beberapa titik data menunjukkan celah untuk instans 16-core 64 GB karena perintah koleksi mengalami timeout saat CPU mencapai 100%. Jumlah koneksi aktual pada titik-titik tersebut tetap 32.000.
Instans spesifikasi khusus dengan 2 core dan memori 16 GB
Jumlah koneksi maksimum: 8.000
|
QPS |
Connections |
Connection utilization |
CPU utilization |
Memory usage |
|
|
|
|
|
|
Rangkuman
-
Instans set replika ApsaraDB for MongoDB dengan semua spesifikasi dan jenis penyimpanan yang diuji berhasil mencapai jumlah koneksi maksimumnya.
-
Setelah mencapai batas maksimum, koneksi tambahan akan ditolak. Aplikasi mengalami latensi tinggi atau permintaan macet akibat kegagalan koneksi.
-
Koneksi bersamaan yang lebih banyak mengonsumsi lebih banyak CPU dan memori. Sesuaikan jumlah koneksi berdasarkan kebutuhan bisnis Anda.
























