ApsaraDB for MongoDB mendukung audit log. Pengujian benchmark mengukur overhead performa akibat mengaktifkan fitur ini, membantu Anda menilai apakah perlu mengaktifkan audit log untuk instans Anda.
Kesimpulan pengujian
Mengaktifkan audit log memengaruhi performa instans ApsaraDB for MongoDB sebagai berikut:
-
Workload hanya tulis (operasi insert atau update murni): Penggunaan CPU meningkat sekitar 3 poin persentase (kenaikan relatif 15% hingga 20%), tanpa perubahan signifikan pada waktu respons atau throughput.
-
Workload baca/tulis campuran: Penggunaan CPU tidak menunjukkan perubahan signifikan, tetapi performa baca/tulis keseluruhan menurun sekitar 15% hingga 20%. Secara spesifik, waktu respons rata-rata untuk operasi tulis meningkat 500–700 μs dan waktu respons rata-rata untuk operasi baca meningkat 150–300 μs, sementara throughput turun 15% hingga 20%.
Lingkungan pengujian
|
Parameter |
Uji Stres Instance ECS |
Instans MongoDB |
|
Wilayah dan zona |
China (Hangzhou) Zona J |
China (Hangzhou) Zona J |
|
Jenis jaringan |
VPC |
VPC |
|
Family tipe instans |
Compute-optimized c8i |
dedicated |
|
Tipe instans |
ecs.c8i.4xlarge (16 vCPU, 32 GB) |
mdb.shard.8x.16xlarge.d (64 vCPU, 512 GB) |
|
Jenis penyimpanan |
Disk cloud ESSD PL0 (disk sistem), tanpa data disk |
Disk cloud ESSD PL1 |
|
Bandwidth |
100 Mbps |
350 Mbps |
|
Ruang penyimpanan |
40 GiB (disk sistem) |
470 GB |
|
Topologi |
- |
Instans replica set Standar (3 node: 1 node primary, 1 node secondary, dan 1 node hidden) |
|
Versi image |
CentOS 7.8 64-bit |
- |
|
Versi kernel instans |
- |
MongoDB 6.0 (versi kernel minor 7.0.23) |
|
Read/Write Concern |
- |
Default read/write concern |
Instans ECS pengujian stres dan instans ApsaraDB for MongoDB berada di wilayah dan zona yang sama. Round-Trip Time (RTT) di antara keduanya sekitar 0,104 ms.
Tool pengujian
Pengujian benchmark menggunakan tool open-source YCSB (Yahoo! Cloud Serving Benchmark) versi 0.17.0.
YCSB adalah tool benchmark berbasis Java yang mendukung berbagai database. Untuk instruksi instalasi dan penggunaan, lihat YCSB.
Prosedur pengujian
-
Tambahkan primary private IP address instans ECS ke daftar putih IP instans ApsaraDB for MongoDB. Untuk instruksi, lihat Modify IP whitelist.
CatatanLogin ke ECS console dan temukan primary private IP address instans ECS di bagian Network Information pada halaman Instance Details.
-
Hubungkan ke instans ECS secara remote. Untuk instruksi, lihat Connect to an ECS instance.
-
Gunakan tool YCSB untuk memuat data uji.
./bin/ycsb load mongodb -s -p workload=site.ycsb.workloads.CoreWorkload -p recordcount=10000000 -p mongodb.url="mongodb://root:xxx@dds-bp1be0f4f3bbdxxxx.mongodb.rds.aliyuncs.com:3717,dds-bp1be0f4f3bbdxxxx.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-xxxx" -threads 300Modifikasi parameter berikut sesuai kebutuhan:
-
recordcount=10000000: Jumlah total catatan yang dimuat ke instans MongoDB. Pengujian ini memuat 10 juta catatan. -
mongodb.url="mongodb://root:xxx@dds-bp1be0f4f3bbdxxxx.mongodb.rds.aliyuncs.com:3717,dds-bp1be0f4f3bbdxxxx.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-xxxx": String koneksi instans MongoDB. Pengujian ini terhubung ke database admin menggunakan akun root.CatatanTemukan string koneksi di bagian Database Connections pada halaman Internal Connections di ApsaraDB for MongoDB console.
-
threads=300: Jumlah thread konkuren untuk client.
-
-
Jalankan perintah berikut untuk melakukan pengujian benchmark. Contoh berikut menunjukkan perintah untuk workload update 100%:
./bin/ycsb run mongodb -s -p workload=site.ycsb.workloads.CoreWorkload -p recordcount=10000000 -p operationcount=500000000 -p insertproportion=0 -p readproportion=0 -p updateproportion=1 -p requestdistribution=zipfian -p mongodb.url="mongodb://root:xxx@dds-bp1be0f4f3bbdxxxx.mongodb.rds.aliyuncs.com:3717,dds-bp1be0f4f3bbdxxxx.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-xxxx" -threads 300 -target 100000Modifikasi parameter berikut:
-
recordcount=10000000: Jumlah total catatan yang dimuat ke instans MongoDB. Nilai ini harus sama dengan nilai pada Langkah 3. -
operationcount=500000000: Jumlah total operasi baca dan tulis yang akan dilakukan. Pengujian ini melakukan 500 juta operasi. -
insertproportion=0: Proporsi operasi insert. Nilainya berkisar antara 0 hingga 1, di mana 1 merepresentasikan 100%. -
readproportion=0: Proporsi operasi baca. Nilainya berkisar antara 0 hingga 1. -
updateproportion=1: Proporsi operasi update. Nilainya berkisar antara 0 hingga 1. -
mongodb.url="mongodb://root:xxx@dds-bp1be0f4f3bbdxxxx.mongodb.rds.aliyuncs.com:3717,dds-bp1be0f4f3bbdxxxx.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-xxxx": String koneksi instans MongoDB. Dapatkan nilai ini seperti yang dijelaskan pada langkah sebelumnya. -
threads=300: Jumlah thread konkuren untuk client. -
target=100000: Target throughput dalam operasi per detik (ops/sec). Target pengujian ini adalah 100.000 ops/sec.
-
Hasil pengujian
Lingkungan
|
Tipe instans |
Versi MongoDB |
recordcount |
threads |
|
64 vCPU, 512 GB (dedicated) |
MongoDB 6.0 (versi kernel minor 7.0.23) |
10000000 |
300 |
Skenario pengujian
-
insert:read:update=100:0:0: Workload insert murni. Audit log diaktifkan untuk operasi insert. -
insert:read:update=0:0:100: Workload update murni. Audit log diaktifkan untuk operasi update. -
insert:read:update=50:50:0: 50% insert dan 50% baca. Audit log diaktifkan untuk operasi insert dan query. -
insert:read:update=0:50:50: 50% baca dan 50% update. Audit log diaktifkan untuk operasi query dan update. -
insert:read:update=30:70:0: 30% insert dan 70% baca. Audit log diaktifkan untuk operasi insert dan query. -
insert:read:update=0:70:30: 70% baca dan 30% update. Audit log diaktifkan untuk operasi query dan update.
Metrik
-
CpuUsage: Utilisasi CPU instans. -
MongoDB_RT: Waktu respons rata-rata instans, termasukwrites_avg_rt(waktu respons rata-rata untuk operasi tulis) danreads_avg_rt(waktu respons rata-rata untuk operasi baca). -
MongoDB_Opcounters: Jumlah operasi query, insert, dan update per detik.
Hasil pengujian
Tabel berikut merangkum perubahan performa setelah mengaktifkan audit log untuk setiap skenario.
|
Skenario pengujian |
CpuUsage |
MongoDB_RT |
MongoDB_Opcounters |
|
Pure insert (100:0:0) |
Kenaikan 3 poin persentase (+15%) |
Tidak ada perubahan signifikan |
Tidak ada perubahan signifikan |
|
Pure update (0:0:100) |
Kenaikan 3 poin persentase (+20%) |
Tidak ada perubahan signifikan |
Tidak ada perubahan signifikan |
|
50% insert + 50% read (50:50:0) |
Tidak ada perubahan signifikan |
writes_avg_rt: +700 μs (+20%); reads_avg_rt: +300 μs (+250%) |
query: -5.000 (-20%); insert: -5.000 (-20%) |
|
50% read + 50% update (0:50:50) |
Tidak ada perubahan signifikan |
writes_avg_rt: +500 μs (+18%); reads_avg_rt: +150 μs (+200%) |
query: -5.000 (-15%); update: -5.000 (-15%) |
|
30% insert + 70% read (30:70:0) |
Tidak ada perubahan signifikan |
writes_avg_rt: +600 μs (+20%); reads_avg_rt: +300 μs (+270%) |
query: -12.000 (-20%); insert: -5.000 (-20%) |
|
70% read + 30% update (0:70:30) |
Tidak ada perubahan signifikan |
writes_avg_rt: +500 μs (+20%); reads_avg_rt: +150 μs (+150%) |
query: -10.000 (-15%); update: -5.000 (-15%) |
Analisis
-
Workload hanya tulis: Penggunaan CPU meningkat sedikit, tetapi waktu respons dan throughput tetap stabil. Mengaktifkan audit log pada skenario hanya-tulis memiliki overhead minimal.
-
Workload baca/tulis campuran: Penggunaan CPU tetap tidak berubah, tetapi throughput keseluruhan turun 15% hingga 20%, serta waktu respons baca dan tulis meningkat secara nyata.
Persentase kenaikan untuk reads_avg_rt tampak tinggi (150% hingga 270%) karena garis dasarnya rendah (sekitar 100 μs). Kenaikan absolutnya hanya 150 hingga 300 μs.