شراء حساب Tencent Cloud: تجربة دم ودموع حقيقية مع إنتاجية كبيرة لخادم الذاكرة

سحابة 2026-06-17 阅读 2
1

في دائرة الإنترنت اليوم ، الكلمات التي يتحدث عنها المهندسون المعمرون والمطورون الخلويون كل يوم هي:

التزامن العالي ، تأخير منخفض ، إنتاجية كبيرة

.

من أجل متابعة هذه المؤشرات ، قمنا بتحسين الكود بشكل يائس ، وإضافة ذاكرة التخزين المؤقت لـ Redis ، وفصل القراءة والكتابة في MySQL ، وإنشاء جدول فرعي... كان من السهل التخلص من الشعر. ولكن في كثير من الحالات ، في مواجهة ذروة الرعب الحقيقية (مثل ارتفاع التجارة الإلكترونية ، واليانصيب ، ومعدات إنترنت الأشياء الضخمة التي تبلغ عن البيانات في الثانية) ، ستجد أنه بغض النظر عن كيفية تحسينها ، فإن وحدة المعالجة المركزية للخادم لا تزال ممتلئة على الفور ، وإنتاجية النظام لا يمكن أن تستمر.

في وقت لاحق ، أيقظني صديقي في جملة واحدة: "أنت تقوم بإصلاح مستوى البرنامج كل يوم ، لماذا لا تنظر إلى الأجهزة الأساسية ؟

المثيل العام الذي اشتريته بميزانيتك ، وعرض النطاق الترددي للذاكرة الأساسية وذاكرة التخزين المؤقت لوحدة المعالجة المركزية قد تم ضغطها منذ فترة طويلة من قبلك!

"

دون شك ، قام فريقنا بترحيل ذاكرة التخزين المؤقت الأساسية وعقدة معالجة البيانات إلى خادم الذاكرة الداخلية لمصنعي السحابة على نفقته الخاصة. في هذا البرنامج التعليمي اليوم ، بغض النظر عن معلمات PPT الرسمية الافتراضية ، سأأخذك لتجربة شاملة وغامضة من منظور شخص حقيقي لمهندسي الخط الأول:

عندما يضرب خادم الذاكرة خدمة "الإنتاجية الكبيرة" ، ما هي نوع التجربة المنعشة ؟

1. ما هو خادم الذاكرة ؟ (النسخة العامية الكبيرة)

قبل التحدث عن القياس الفعلي ، علينا أن نكتشف:

خادم الذاكرة ، ما هو خاص ؟

يعتقد الكثير من الناس أن الخادم لا ينظر فقط إلى عدة نواة لوحدة المعالجة المركزية وبضع غيغابايت من الذاكرة ؟ يحتوي خادم General Purpose على 16 نواة 64G ، ويحتوي خادم الذاكرة أيضًا على 16 نواة 64G. لماذا يكون نوع الذاكرة أغلى ؟ هل هي ضريبة الذكاء ؟

الجواب هو:

تختلف "الجودة" و "النسبة" للذاكرة تمامًا.

"نسبة" الرعب: عادةً ما تكون نسبة وحدة المعالجة المركزية إلى الذاكرة للخوادم ذات الأغراض العامة 1:4 دولارات (مثل 4 نواة 16G) ؛ في حين أن نسبة خادم الذاكرة عادة ما تكون 1:8 دولارًا أو حتى 1:16 دولارًا (على سبيل المثال ، 4 نواة 32G ، أو 8 نواة 64G).

"قنوات رفع تردد التشغيل" على مستوى الأجهزة: غالبًا ما تستخدم خوادم الذاكرة أحدث وحدات المعالجة المركزية المتطورة (مثل معالجات AMD EPYC أو Intel Xeon Scalable عالية التردد) ولديها المزيد من قنوات الذاكرة. هذا يعني أن ذاكرة الخادم العادية تشبه تشغيل طريق مقاطعة مزدوج المسار ، بينما تعمل ذاكرة خادم الذاكرة الداخلية على طريق فائق السرعة ثنائي الاتجاه من 8 حارات. عرض النطاق الترددي للذاكرة (Bandwidth) والتردد المرجعي أعلى بكثير من النوع العام.

تأخير منخفض للغاية: نظرًا لأن البنية الأساسية تعمل على تحسين الوصول إلى الذاكرة بشكل كبير ، فقد تم ضغط تأخير وصول وحدة المعالجة المركزية إلى بيانات الذاكرة إلى مستوى النانو.

اثنان

، إعادة إنتاج المشهد: تعذيب "أعمال الجحيم" للخوادم ذات الأغراض العامة

من أجل أن يكون لدى الجميع شعور بديهي بـ "الإنتاجية الكبيرة" ، اسمحوا لي أولاً أن أوضح ما واجهناه في ذلك الوقت

سيناريوهات الأعمال الحقيقية

:

لدينا تطبيق إنترنت الأشياء (IoT) حيث يتم تشغيل مئات الآلاف من الأجهزة الذكية عبر الإنترنت في جميع أنحاء البلاد في وقت واحد خلال فترة الذروة من الساعة 8:00 إلى 9:00 كل ليلة. يقوم كل جهاز بإبلاغ الخادم ببيانات JSON المعقدة (بما في ذلك درجة الحرارة والطاقة ومسار GPS وسجلات تشغيل المستخدم وما إلى ذلك) كل 0.5 ثانية.

نقاط الألم في العمل: QPS (طلبات في الثانية): يمكن أن تصل الذروة إلى 100000. خصائص البيانات: عالية التردد ، إنتاجية كبيرة ، لكن حزمة بيانات واحدة صغيرة. الهيكل القديم: خادم واحد عام (16 نواة 64G) لإعادة توجيه Nginx ، وخادمين عامين يديرون خدمة استقبال مكتوبة بلغة Go. تتم كتابة البيانات أولاً في مجموعة ذاكرة التخزين المؤقت المحلية Redis ، ثم يتم تمريرها إلى MongoDB بواسطة برنامج نصي غير متزامن.

انهيار العمارة القديمة يوميا:

شراء حساب تينسنت كلاود

كل ليلة في الساعة 8:30 ، بدأت الرسائل النصية للشرطة في القصف العشوائي. افتح لوحة المراقبة لإلقاء نظرة:

يستقر شغل وحدة المعالجة المركزية فوق 95 ٪.

بدأ Nginx في الإبلاغ عن 502 Bad Gateway أو 504 Gateway Timeout.

لا يمكن الوصول إلى إنتاجية النظام (Throughput) عند 30 ، 000/ثانية. يتم انتظار جميع الطلبات المتبقية في قائمة الانتظار ، ويتم إضاعة الوقت ، ثم يتم إعادة المحاولة من قبل الجهاز ، مما يؤدي إلى تأثير انهيار جليدي أكثر رعبا.

تساءلنا في ذلك الوقت: من الواضح أن الذاكرة تستخدم أقل من 40 ٪ ، لماذا النظام عالق ؟

في وقت لاحق ، أخذت الأداة واسترد البيانات الأساسية لتعرف ،

نظرًا لأن تبادل البيانات متكرر للغاية ، فإن وحدة المعالجة المركزية تنفق الكثير من الطاقة على "انتظار الذاكرة لنقل البيانات" لتبديل السياق واصطف الحافلة (أي عنق الزجاجة في عرض النطاق الترددي للذاكرة).

3. ضبط الحد: القياس الفعلي على مدار 24 ساعة لاستبدال خادم الذاكرة

من أجل حل هذه المشكلة ، قمنا باستبدال الخادمين العامين الذين يتلقون الخدمة مباشرة إلى اثنين

خادم الذاكرة (16 نواة 128G ، باستخدام أحدث جيل من بنية ذاكرة DDR5)

.

بعد إعادة الاتصال بالإنترنت ، استخدمنا أداة اختبار الإجهاد لمحاكاة اختبار الضغط النهائي المتزامن البالغ 100000. لا يمكن وصف التجربة الحقيقية إلا في كلمتين:

صدمة

.

فيما يلي جدول مقارنة البيانات الأساسية التي سجلنا أثناء اختبار الضغط:

مؤشرات المراقبة

العمارة القديمة: مثال عام (16 نواة 64G × 2)

بنية جديدة: مثال الذاكرة (16 نواة 128G × 2)

تحسين الأداء وتغيير التجربة

الإنتاجية القصوى (Throughput)

~ 35 ، 000 طلب/ثانية (مواجهة عنق الزجاجة)

112 ، 000 طلب/ثانية

ارتفاع 3.2 مرات وابتلاع كل حركة المرور بسهولة

متوسط تأخير الاستجابة (Latency)

240ms (طوابير كبيرة

الوقت الإضافي)

4.2ms

استجابة لحظية تقريبًا ، لا توجد مهلة من جانب الجهاز

فترة الذروة إشغال وحدة المعالجة المركزية

95 ٪-100 ٪ (حافة عالقة)

32 ٪-40 ٪

وحدة المعالجة المركزية على مهل للغاية ، مع هامش ضخم

استخدام عرض النطاق الترددي للذاكرة

ما يقرب من 100 ٪ (حافلة مسدودة)

28 ٪

قوة 8 قنوات DDR5 ، عدد أقل من السيارات

الحس الحقيقي للضبط:

عندما دفعت أداة قياس الضغط رقم التزامن إلى 100000 ، كانت راحة يدي تتعرق بالفعل. لكن السحر هو أن منحنى المراقبة لم يرتفع إلى 100 ٪ كما كان من قبل.

يتم رفع منحنى وحدة المعالجة المركزية لخادم الذاكرة برفق فقط ، ويبقى بأمان عند حوالي 35 ٪. كانت خدمة الاستقبال بأكملها سهلة مثل المشي في النسيم مع إنتاجية كبيرة. تم التخلص من تجزئة الذاكرة وإيقاف النظام الناجم عن إعادة تدوير القمامة (GC) ، والذي ظهر غالبًا على الخوادم العامة ، دون أن يترك أثراً بسبب عرض النطاق الترددي العازل للذاكرة الكبير على مثيلات الذاكرة.

4. القاع العميق: 3 أسرار وراء الإنتاجية الكبيرة

عند رؤية هذا ، قد تسأل: "أخي ، بعد تغيير نوع الخادم ، لماذا يكون الأداء أسوأ بكثير ؟ ما هو المنطق الأساسي وراء هذا ؟"

بالاقتران مع هذا القياس الفعلي ، سأفصل القصة الداخلية للجميع:

السر 1: القضاء على وحدة المعالجة المركزية "الانتظار غير الفعال" (Memory Bound)

في الجزء السفلي من الكمبيوتر ، تكون سرعة حساب وحدة المعالجة المركزية أسرع بمئات المرات من سرعة قراءة وكتابة الذاكرة. إذا كان عملك "إنتاجية كبيرة" (مثل التزامن العالي ، والقراءة والكتابة المتكررة وذاكرة التخزين المؤقت) ، فغالبًا ما تحتاج وحدة المعالجة المركزية إلى إيقاف العمل في يدك وانتظار الذاكرة لنقل البيانات.

يحتوي الخادم العام على عرض نطاق منخفض للذاكرة ، وغالبًا ما يكون لدى وحدة المعالجة المركزية 60 ٪ من الوقت في "التجديف والبيانات الأخرى". تصميم النطاق الترددي العالي والقناة العالية لخادم الذاكرة ،

دع الذاكرة يمكن أن تغذي البيانات إلى وحدة المعالجة المركزية في أسرع وقت ممكن

، قم حقًا بضغط الأداء متعدد النواة لوحدة المعالجة المركزية.

السر 2: إعطاء Redis / Memcached بؤرة الفيزياء شبه المثالية

تم استخدام Redis بشكل كبير في بنيتنا. Redis هي قاعدة بيانات ذاكرة نقية ، وهي كذلك

نموذج خيط واحد

.

على خادم عام ، بمجرد أن يواجه Redis عشرات الآلاف من عمليات القراءة والكتابة في الثانية ، فإن المسار الفردي سيكون عالقًا بسبب استجابة الذاكرة البطيئة. بعد استبدال خادم الذاكرة ، يكون تأخير الذاكرة الأساسي منخفضًا للغاية ، وقد تم استخدام ميزة Redis ذات الخيط الفردي إلى أقصى الحدود. يمكن أن يتجاوز الجهاز الفردي بسهولة 100000 QPS ، وتضاعف الإنتاجية مباشرة.

السر 3: "الفضاء مقابل الوقت" الذي تجلبه سعة الذاكرة الكبيرة

نظرًا لأن ذاكرة خادم الذاكرة سخية بما فيه الكفاية (128G ، 256G في كل منعطف) ، فقد فتحنا مباشرة ضخمة في كود لغة Go

المخزن المؤقت للذاكرة (In-Memory Buffer Ring)

.

بعد أن تأتي البيانات ، ليست هناك حاجة للذهاب على الفور لقراءة وكتابة القرص أو الذهاب إلى التعقيد

التحقق من الشبكة ، كل شيء مكدس في الذاكرة أولاً. يتم تمرير الخادم ببطء إلى قاعدة البيانات في الخلفية. لا يجرؤ هذا النوع من طريقة اللعب "الفضاء مقابل الوقت" إلا على خادم مليء بالذاكرة.

5. دليل تجنب الحفرة: ما هي الأعمال التي يجب أن تغمض عينيك ؟ التي لا تشتري ؟

على الرغم من أن خادم الذاكرة رائع ، إلا أن سعره أغلى من عام. لمساعدة الجميع على توفير المال ، قمت بتلخيص مجموعة

دليل اختيار تجنب الحفرة

.

💡لا تتردد ، يجب أن تكون هذه المشاهد على [خادم الذاكرة]:

عقدة ذاكرة التخزين المؤقت عالية الأداء: إذا كان الخادم الخاص بك يستخدم بشكل أساسي لتشغيل Redis أو Memcached أو ذاكرة التخزين المؤقت Nginx عالية التزامن.

تحليل البيانات الكبيرة في الوقت الفعلي/قائمة انتظار الرسائل: مثل Run Kafka و Spark Streaming و Flink وما إلى ذلك. متطلبات عرض النطاق الترددي للذاكرة لهذه البرامج الوسيطة عالية للغاية.

خادم اللعبة عالي التزامن: في اللعبة ، تتفاعل إحداثيات اللاعب بالكامل وحجم الدم وحالة اللاعب بشكل متكرر في الذاكرة ، ولا يمكن للخادم العام حمله على الإطلاق.

قواعد البيانات ذاتية البناء ذات الأحمال العالية: مثل ClickHouse التي تتطلب ذاكرة دائمة ، ومثال MySQL مع ذاكرة كبيرة.

❌عند الاستماع إلى إقناعي ، يكفي اختيار [النوع العام/النوع الحسابي] لهذه المشاهد:

موقع الشركة الرسمي العادي ، والمدونات ، وخلفية البرنامج الصغير: حجم التزامن يدمر مئات الأشخاص ، واستخدام نوع الذاكرة هو مجرد مضيعة للمال.

الأعمال التي تعتمد بشكل كبير على حوسبة وحدة المعالجة المركزية: مثل تحويل الفيديو ، وعرض الصور ، والحوسبة العلمية. تحتاج هذه الشركات إلى وحدات المعالجة المركزية عالية التردد وعالية الأداء (يجب اختيار مثيلات C من النوع الحسابي) ، وهي ليست حساسة جدًا لعرض النطاق الترددي للذاكرة.

محطة تنزيل الملفات الثابتة النقية/قرص النسخ الاحتياطي: عنق الزجاجة هو عرض النطاق الترددي للشبكة وإنتاجية القرص الصلب (يجب عليك اختيار عرض النطاق الترددي الكبير ومحرك السحابة القياسي) ، والذي لا علاقة له بالذاكرة.

سادساً، الخلاصة

هذه المرة ، كسر "القياس الحقيقي للإنتاجية الفائقة لخادم الذاكرة الداخلية" تمامًا تحيز فريقنا السابق "نظرية وحدة المعالجة المركزية فقط".

شراء حساب تينسنت كلاود

في عصر الحوسبة السحابية ، غالبًا ما لا يعتمد القضاء على اختناقات النظام على مدى دقة إعادة البناء التي قمت بها للرمز ، ولكن لمعرفة ما إذا كنت تقوم بذلك

يتم وضع العمل المناسب على الأجهزة الأكثر تطابقًا مع تقسيم العمل

. يستخدم خادم الذاكرة عرض النطاق الترددي المرعب والكمون المنخفض لتظهر لنا ما هو "الطيران القوي" الحقيقي.

إذا كان عملك يعاني أيضًا من "التزامن العالي ، والإنتاجية الكبيرة ، وارتفاع وحدة المعالجة المركزية الذي لا يمكن تفسيره" ، فقد ترغب في فتح مثيل الذاكرة الليلة لإجراء اختبار الضغط-صدقوني ، هذا النوع من النعومة. تجربة الإنتاجية الكبيرة ستجعلك تشعر أن كل قرش يتم إنفاقه على النصل!

cloud
← 返回新闻中心