برنامه نویسی

تعادل بار DocumentDB: یادگیری کلیدی از تست بار ما

درک مسئله تعادل بار
در یک خوشه معمولی Amazon DocumentDB ، یک گره اصلی وجود دارد که تمام عملیات نوشتن و یک یا چند ماکت خوانده شده را برای توزیع ترافیک خوانده شده انجام می دهد. در طول آزمایش بار ، ما مشاهده کردیم که یک ماکت خوانده شده به دلیل درخواست های زیاد خوانده شده ، بیش از 90 ٪ استفاده از CPU را مورد استفاده قرار می دهد.

برای رسیدگی به بار افزایش ، ما یک ماکت خوانده شده دیگر را به خوشه اضافه کردیم و انتظار داشتیم بار بین دو ماکت توزیع شود. با این حال ، ماکت جدید مورد استفاده قرار نگرفت ، در حالی که ماکت قدیمی خواندن همچنان بیشتر ترافیک را کنترل می کرد.

چرا این اتفاق افتاد؟
DocumentDB ترافیک را در سطح درخواست متعادل نمی کند بلکه در سطح اتصال TCP است. هنگامی که یک اتصال TCP برقرار شد ، Balancer Load DocumentDB آن را به یکی از گره های موجود اختصاص می دهد. پس از ایجاد اتصال ، تمام نمایش داده شدگان از این اتصال به همان گره می روند. از آنجا که اتصالات موجود ما قبلاً به اولین ماکت خوانده شده نقشه برداری شده بود ، ماکت جدید خواندن هیچ درخواستی دریافت نمی کرد.

راه حل: راه اندازی مجدد غلافهای برنامه
تنها راه مؤثر برای توزیع ترافیک در ماکت تازه که به تازگی خوانده شده است ، راه اندازی مجدد غلافهای برنامه ما بود. با انجام این کار ، ما درخواست خود را مجبور به ایجاد اتصالات جدید TCP کردیم ، که سپس در هر دو ماکت خوانده شده توزیع می شدند و بار را به طور مؤثرتری متعادل می کردند.

غذای اصلی:
BALANCENCES DOCCEMEDDB در سطح اتصال TCP ، نه در هر درخواست.
اضافه کردن یک ماکت جدید خواندن به طور خودکار ترافیک را توزیع نمی کند.
برای اطمینان از توزیع بار مناسب ، برای ایجاد اتصالات جدید TCP ، غلافهای برنامه را مجدداً راه اندازی کنید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا