Pembelian akaun Tencent Cloud: pengalaman darah dan air mata sebenar pelayan memori dengan throughput yang besar

awan 2026-06-17 阅读 1
cloud

Dalam lingkaran Internet hari ini, kata-kata yang dibincangkan oleh arkitek dan pembangun belakang setiap hari adalah:

Serentak tinggi, latensi rendah, throughput besar

Untuk mencapai petunjuk ini, kami sangat mengoptimumkan kod, menambahkan cache Redis, melakukan pemisahan membaca dan menulis MySQL, dan melakukan sub-pangkalan data dan sub-jadual... Saya kehilangan rambut saya. Tetapi dalam banyak kes, dalam menghadapi puncak seketika yang benar-benar menakutkan (seperti lonjakan e-dagang, loteri promosi besar, dan peranti IoT besar-besaran yang melaporkan data sesaat), anda akan mendapati bahawa tidak kira bagaimana ia dioptimumkan, CPU pelayan masih penuh dalam sekelip mata, dan throughput sistem Ia tidak boleh hidup atau mati.

Kemudian, rakan saya membangunkan saya dalam satu ayat: "Anda membaiki lapisan perisian setiap hari, mengapa anda tidak melihat perkakasan yang mendasari?

Contoh tujuan umum yang anda beli dengan anggaran, lebar jalur memori yang mendasari dan cache CPU telah lama dikeluarkan oleh anda!

"

Dengan ragu-ragu, pasukan kami memindahkan node pemprosesan cache dan data inti ke pelayan memori-Optimized Instance vendor awan dengan perbelanjaannya sendiri. Tutorial hari ini, tanpa membincangkan parameter PPT rasmi, saya akan membawa anda pengalaman yang komprehensif dan mendalam dari perspektif sebenar arkitek lini pertama:

Apabila pelayan memori memenuhi perniagaan "throughput super besar", apa jenis pengalaman yang menyegarkan?

1. Apakah pelayan memori? (Versi vernakular besar)

Sebelum membincangkan ujian sebenar, kita mesti memikirkan:

Apakah keistimewaan pelayan memori?

Ramai orang berpendapat bahawa pelayan tidak hanya melihat beberapa teras CPU dan beberapa GB memori? Pelayan Tujuan Umum mempunyai 16 teras 64G, dan pelayan Memori Optimized juga mempunyai 16 teras 64G. Mengapa jenis memori lebih mahal? Adakah ia mengenakan cukai IQ?

Jawapannya ialah:

"Kualiti" dan "nisbah" memori sama sekali berbeza.

"Nisbah" yang mengerikan: Nisbah CPU ke memori pelayan tujuan umum biasanya $1:4 $ (seperti 4 teras 16G); sementara nisbah pelayan memori biasanya $1:8 $ atau bahkan $1:16 $ (seperti 4 teras 32G, atau 8 teras 64G).

"Saluran overclocking" tahap perkakasan: Pelayan memori sering menggunakan CPU kelas atas terkini (seperti pemproses AMD EPYC atau Intel Xeon Scalable frekuensi tinggi), dan mempunyai lebih banyak saluran memori (Saluran Memori). Ini bermaksud bahawa memori pelayan biasa seperti menjalankan jalan daerah dua lorong, sementara memori pelayan memori berjalan di lebuh raya 8 lorong dua arah. Lebar jalur memori (Bandwidth) dan frekuensi penanda arasnya jauh lebih tinggi daripada jenis tujuan umum.

Kelewatan yang sangat rendah: Oleh kerana pengoptimuman akses memori yang melampau oleh seni bina yang mendasari, kelewatan akses CPU ke data memori (Latency) dimampatkan ke tahap nanometer.

Dua

, Kemunculan semula pemandangan: "perniagaan neraka" yang menyeksa pelayan tujuan umum

Untuk membiarkan semua orang mempunyai perasaan intuitif tentang "throughput super besar", izinkan saya menerangkan terlebih dahulu apa yang kita hadapi pada masa itu

Senario perniagaan sebenar

:

Kami mempunyai Aplikasi Internet of Things (IoT), di mana beratus-ratus ribu peranti pintar di seluruh negara akan berada dalam talian pada masa yang sama dari jam 8:00 hingga 9:00 setiap malam. Setiap 0.5 saat, setiap peranti akan melaporkan data JSON yang kompleks (termasuk suhu, kuasa, lintasan GPS, log operasi pengguna, dll.) Ke pelayan.

Titik sakit perniagaan: QPS (permintaan sesaat): Nilai puncak dapat mencapai 100,000. Ciri data: frekuensi tinggi, throughput besar, tetapi satu paket data kecil. Senibina lama: 1 pelayan tujuan umum (16 teras 64G) melakukan pemajuan Nginx, 2 pelayan tujuan umum menjalankan perkhidmatan penerimaan yang ditulis dalam bahasa Go, data pertama kali ditulis ke kluster cache Redis tempatan, dan kemudian ditulis ke MongoDB oleh skrip tak segerak.

Keruntuhan seni bina lama setiap hari:

Pembelian akaun Tencent Cloud

Setiap malam pada pukul 8:30, mesej penggera mula mengebom tanpa pandang bulu. Buka papan pengawasan dan lihat:

Kadar penghunian CPU stabil di atas 95%.

Nginx mula melaporkan 502 Bad Gateway atau 504 Gateway Timeout.

Throughput sistem (Throughput) tersekat pada 30,000/s dan tidak dapat naik lagi. Permintaan yang tersisa semuanya berbaris dalam barisan, lembur, dan kemudian dicuba semula oleh peranti, menyebabkan kesan longsoran yang lebih menakutkan.

Kami tertanya-tanya pada masa itu: Jelas bahawa memori kurang dari 40% digunakan, mengapa sistem tersekat?

Kemudian, saya mengambil alat untuk mengambil data yang mendasari.

Oleh kerana pertukaran data yang kerap, CPU menghabiskan banyak tenaga untuk beralih konteks "menunggu memori menghantar data" dan beratur di bas (iaitu, kemacetan lebar jalur memori).

3. Penyesuaian had: ujian sebenar 24 jam untuk menggantikan pelayan memori

Untuk menyelesaikan masalah ini, kami kejam dan secara langsung menyamakan 2 pelayan tujuan umum yang menerima perkhidmatan menjadi 2

Pelayan memori (16 teras 128G, menggunakan seni bina memori DDR5 generasi terkini)

Setelah kembali dalam talian, kami menggunakan alat ujian tekanan untuk mensimulasikan 100,000 ujian tekanan serentak. Pengalaman sebenar hanya dapat digambarkan dalam dua perkataan:

Mengejutkan

Berikut adalah jadual perbandingan data teras yang kami rakam semasa ujian tekanan:

Petunjuk pemantauan

Senibina lama: contoh tujuan umum (16 teras 64G × 2)

Senibina baru: contoh memori (16 teras 128G × 2)

Peningkatan prestasi dan perubahan pengalaman

Extreme Throughput (Throughput)

~ 35,000 permintaan/saat (menghadapi masalah)

112,000 permintaan/saat

Melambung 3.2 kali, dengan mudah menelan semua lalu lintas

Purata kelewatan tindak balas (Latency)

240ms (sebilangan besar barisan

Masa tamat)

4.2ms

Hampir tindak balas seketika, tidak ada masa tamat pada peranti

Kadar penghunian CPU puncak

95% - 100% (tepi tersekat)

32% - 40%

CPU sangat santai dan mempunyai margin yang besar

Penggunaan lebar jalur memori

Hampir 100% (bas tersumbat)

28%

Kekuatan DDR5 8-saluran, lebar jalan dan lebih sedikit kereta

Rasa badan penalaan sebenar:

Ketika alat pengukur tekanan mendorong jumlah serentak menjadi 100,000, telapak tangan saya sebenarnya berpeluh. Tetapi apa yang luar biasa adalah bahawa lengkung pengawasan tidak melonjak hingga 100% curam seperti sebelumnya.

Keluk CPU pelayan memori hanya diangkat dengan lembut, tetap elegan sekitar 35%. Keseluruhan perkhidmatan penerimaan semudah berjalan di angin dengan hasil yang besar. Stop-the-World yang disebabkan oleh fragmen memori dan pengumpulan sampah (GC) yang sering muncul pada pelayan tujuan umum telah hilang tanpa jejak kerana lebar jalur penyangga memori yang besar dalam contoh memori.

4. Permulaan yang mendalam: 3 rahsia di sebalik throughput yang sangat besar

Melihat ini, anda mungkin bertanya: "Saudara, mengapa prestasinya sangat buruk setelah mengubah jenis pelayan? Apakah logik asas di sebalik ini?"

Digabungkan dengan pengukuran sebenar ini, saya akan membongkar kisah dalamannya untuk semua orang:

Rahsia 1: Memory Bound (Memory Bound) yang menghapuskan CPU

Di bahagian bawah komputer, kelajuan pengkomputeran CPU beratus-ratus ribu kali lebih cepat daripada kelajuan membaca dan menulis memori. Sekiranya perniagaan anda "throughput besar" (seperti serentak tinggi, kerap membaca dan menulis cache),CPU sering perlu menghentikan kerja dan menunggu memori menghantar data.

Lebar jalur memori pelayan tujuan umum rendah, dan CPU sering menghabiskan 60% waktunya untuk "mendayung dan data lain". Reka bentuk lebar jalur tinggi dan saluran tinggi pelayan memori,

Biarkan memori dapat memberikan data kepada CPU secepat mungkin

, Benar-benar mengeringkan prestasi multi-teras CPU.

Rahsia 2: Memberi Redis / Memcached sarang fizikal yang hampir sempurna

Redis banyak digunakan dalam seni bina kami. Redis adalah pangkalan data memori tulen, dan ya

Model benang tunggal

Pada pelayan tujuan umum, setelah Redis mengalami puluhan ribu bacaan dan penulisan sesaat, satu baris akan tersekat kerana tindak balas memori yang perlahan. Setelah mengganti dengan pelayan memori, kelewatan memori yang mendasari sangat rendah, dan kelebihan utas tunggal Redis dibawa ke tahap yang melampau. Mesin tunggal dengan mudah melebihi 100,000 QPS, dan throughput secara langsung meningkat dua kali ganda.

Rahsia 3: "Ruang untuk masa" yang dibawa oleh kapasiti memori yang besar

Kerana memori pelayan memori cukup murah hati (128G, 256G pada setiap masa), kami secara langsung membuka sejumlah besar

Penyangga Memori (In-Memory Buffer Ring)

Setelah data masuk, tidak perlu segera membaca dan menulis cakera atau menjadi rumit

Pengesahan rangkaian, pertama, semuanya disusun dalam memori tanpa otak. Pelayan perlahan-lahan memasukkan Batch ke dalam pangkalan data di latar belakang. Permainan "ruang untuk masa" seperti ini hanya berani bermain seperti ini di pelayan dengan memori yang mencukupi.

5. Panduan Mengelakkan Lubang: Perniagaan mana yang harus ditutup? Yang mana yang tidak boleh dibeli?

Walaupun pelayan memori sejuk, harganya memang lebih mahal daripada pelayan tujuan umum. Untuk membantu semua orang menjimatkan wang, saya meringkaskan satu set

Panduan pemilihan

💡Jangan ragu, senario ini mesti ada di [Pelayan Memori]:

Nod cache berprestasi tinggi: Sekiranya pelayan anda digunakan terutamanya untuk menjalankan cache Redis, Memcached atau Nginx yang sangat serentak.

Analisis data besar masa nyata/barisan mesej: seperti menjalankan Kafka, Spark Streaming, Flink, dll. Perisian tengah ini mempunyai keperluan yang sangat tinggi untuk lebar jalur memori.

Pelayan permainan serentak tinggi: Koordinat, jumlah darah, dan status pemain dalam keseluruhan gambar dalam permainan sering berinteraksi dalam memori, dan pelayan tujuan umum sama sekali tidak dapat menahannya.

Pangkalan data buatan sendiri dengan beban tinggi: seperti ClickHouse yang memerlukan memori kekal, contoh MySQL dengan memori besar.

❌Dengarkan nasihat saya, pilih [Jenis Universal/Pengiraan] untuk senario ini:

Laman web rasmi korporat biasa, blog, dan latar belakang program mini: jumlah serentak adalah beberapa ratus, dan jenis memori adalah pembaziran wang.

Perkhidmatan yang sangat bergantung pada pengkomputeran CPU: seperti transkoding video, rendering gambar, dan pengkomputeran saintifik. Perkhidmatan ini memerlukan CPU frekuensi tinggi dan berprestasi tinggi (contoh pengkomputeran C harus dipilih), yang tidak begitu sensitif terhadap lebar jalur memori.

Stesen muat turun fail statik murni/cakera sandaran: Botoknya terletak pada lebar jalur rangkaian dan throughput cakera keras (anda harus memilih lebar jalur besar dan cakera awan standard), yang tidak ada kaitan dengan memori.

Enam, Rumusan

Kali ini "pengukuran sebenar throughput super besar pelayan memori" benar-benar mematahkan prasangka "teori CPU sahaja" pasukan kami pada masa lalu.

Pembelian akaun Tencent Cloud

Pada era pengkomputeran awan, menghilangkan kemacetan sistem sering tidak bergantung pada seberapa halus anda menyusun semula kod tersebut, tetapi pada apakah anda telah

Perniagaan yang sesuai, diletakkan pada perkakasan dengan pembahagian kerja yang paling sesuai

。 Pelayan memori menggunakan lebar jalur yang menakutkan dan latensi rendah untuk menunjukkan kepada kita apa yang sebenarnya "terbang batu bata besar".

Sekiranya perniagaan anda juga menderita "serentak tinggi, throughput besar, dan CPU yang tidak dapat dijelaskan", anda mungkin juga membuka contoh memori malam ini untuk ujian tekanan-percayalah, yang halus seperti sutera Pengalaman throughput yang sangat besar akan membuat anda merasa bahawa setiap sen dibelanjakan untuk pisau!

cloud
← 返回新闻中心