انتشار Memcached 1.6.0 با فعال بودن پشتیبانی از حافظه خارجی

صورت گرفت انتشار قابل توجهی از سیستم کش داده های درون حافظه Memcached 1.6.0، که بر روی داده ها در قالب کلید/مقدار عمل می کند و استفاده از آن آسان است. Memcached معمولاً به عنوان یک راه حل سبک وزن برای سرعت بخشیدن به کار سایت های پر بار با دسترسی کش به DBMS و داده های میانی استفاده می شود. کد عرضه شده تحت مجوز BSD

نسخه جدید اجرای ذخیره سازی را تثبیت می کند "extstore"، که اکنون به طور پیش فرض ساخته شده است (برای غیرفعال کردن در اسکریپت پیکربندی، گزینه "-disable-extstore" ارائه شده است)، اما به فعال سازی صریح در هنگام راه اندازی نیاز دارد (نصب های قدیمی بدون تغییر پس از به روز رسانی به کار خود ادامه می دهند). اگرچه extstore به طور کلی پایدار در نظر گرفته می شود، هنگام اجرای آن در سیستم های بسیار بزرگ احتیاط می شود.

Extstore به شما امکان می دهد از درایوهای SSD/Flash برای افزایش اندازه کش استفاده کنید. همانند حافظه رم، حافظه فلش دائمی نیست و پس از راه اندازی مجدد تنظیم مجدد می شود. دامنه حالت جدید اطمینان از ذخیره کارآمد داده های بزرگ است. هنگام استفاده از "extstore"، کلیدها و ابرداده ها، مانند قبل، فقط در RAM ذخیره می شوند، اما داده های بزرگ مرتبط با کلیدها، که اندازه آنها از آستانه تعیین شده فراتر می رود، در حافظه خارجی ذخیره می شود و فقط اشاره گر در RAM باقی می ماند.

اگر کلید با داده های کوچک مرتبط باشد، Memcached طبق معمول کار می کند، داده ها را در حافظه نگه می دارد و به حافظه خارجی دسترسی ندارد. اگر مقدار زیادی حافظه آزاد وجود داشته باشد، می‌توان اطلاعات مورد نیاز را به‌طور کامل در حافظه پنهان RAM قرار داد (به عنوان مثال، می‌توانید مشخص کنید که فقط اشیاء بزرگ‌تر از 1024 بایت که به مدت 3600 ثانیه به آنها دسترسی نداشته‌اند به Flash بازنشانی شوند. ).

پیاده سازی برای اطمینان از حداکثر کارایی و حداقل بار CPU، با هزینه ذخیره سازی (سطح بالای تکه تکه شدن) بهینه شده است. برای افزایش طول عمر درایوهای فلش، داده ها به صورت متوالی بافر شده و به ذخیره سازی منتقل می شوند. برای ذخیره وضعیت حافظه پنهان بین راه اندازی مجدد، می توانید از قابلیتی که در نسخه 1.5.18 ظاهر شد برای تخلیه حافظه پنهان در یک فایل استفاده کنید. در راه‌اندازی بعدی، می‌توانید کش را از این فایل بازیابی کنید تا پیک‌های بارگذاری روی پردازنده‌های محتوا به دلیل خالی بودن حافظه پنهان (حافظه پنهان بلافاصله «گرم» شود) حذف شود.

دومین تغییر مهم در Memcached 1.6، بازسازی کد ارتباطی شبکه بود که برای پردازش خودکار درخواست‌های دسته‌ای در یک تماس سیستمی منفرد سازگار است. پیش از این، هنگام ارسال چندین دستور GET در یک بسته TCP، memcached نتایج را با تماس‌های سیستمی جداگانه ارسال می‌کرد. در Memcached 1.6، پاسخ‌ها جمع‌آوری می‌شوند و با ارسال یک تماس سیستمی بازگردانده می‌شوند. به عنوان یک نتیجه، در حال حاضر به طور متوسط ​​1.5 کلید در هر تماس سیستمی وجود دارد که در آزمایشات کاهش بار CPU را تا 25٪ و کاهش تاخیر تا چند درصد را نشان می دهد.

طراحی مجدد زیرسیستم شبکه همچنین امکان حرکت به تخصیص پویا از بافرها را در صورت نیاز به جای تخصیص استاتیکی بافرها فراهم کرد. این بهینه سازی باعث کاهش مصرف حافظه در هنگام انتظار برای دستورات جدید از طریق اتصال برقرار شده توسط کلاینت از 4.5 کیلوبایت به 400-500 بایت شد و همچنین امکان خلاص شدن از شر بسیاری از تماس ها به malloc، realloc و free را فراهم کرد که منجر به تکه تکه شدن غیر ضروری حافظه می شود. سیستم هایی با تعداد زیادی اتصال هر نخ کارگر اکنون مجموعه خود را از بافرهای خواندن و نوشتن برای اتصالات کلاینت فعال مدیریت می کند. برای تنظیم اندازه این بافرها
گزینه های "-o resp_obj_mem_limit=N" و "-o read_buf_mem_limt=N" ارائه شده است.

شعبه 1.6 نیز منسوخ شدن از پروتکل باینری تعامل با سرور تعمیر و نگهداری پروتکل باینری و رفع اشکال ادامه خواهد داشت، اما ویژگی‌های جدید و به‌روزرسانی‌های ویژگی‌های موجود منتقل نمی‌شوند. پروتکل متنی بدون تغییر به توسعه خود ادامه خواهد داد. پروتکل باینری با یک پروتکل جدید جایگزین شده است متا (نسخه متنی پروتکل با فرا دستورات فشرده)، که ترکیب بهینه عملکرد و قابلیت اطمینان را نشان می دهد. پروتکل جدید تمامی عملیاتی را که قبلاً از طریق پروتکل های متنی و باینری در دسترس بوده اند، پوشش می دهد.

منبع: opennet.ru

اضافه کردن نظر