افزایش سرعت با مم‌کشد Memcached

5 دیدگاه
دسته بندی: آموزش, لینوکس
افزایش سرعت با مم‌کشد Memcached

memcached یک سیستم کش آزاد و اپن‌سورس است که با کاهش لود دیتابیس سرعت دسترسی به وب‌سایت‌های داینامیک یا برنامه‌ها را افزایش می‌دهد. این برنامه رکوردهای دیتابیسی که امکان کش شدن دارند را برای استفاده در کوئری های بعد در حافظه RAM نگه‌داری می‌کنند.

عملکرد: حالتی را تصور کنید که برنامه یا وب‌سایت شما داده‌هایی در پایگاه داده دارد که در بازه زمانی کوتاه تغییر نمی‌کند (مثلا پست‌های وبلاگ شما) پس چه لزومی دارد که هر بار با ارسال جستجو به پایگاه داده بار اضافه به روی پایگاه داده تحمیل کنیم و از طرفی سرعت وب‌سایت و یا برنامه را افزایش دهیم. برنامه memcached به عنوان واسطی بین برنامه شما و پایگاه داده مقادیر را به صورت کلید مقدار در حافظه رم نگهداری می‌کند و شما قبل از ارسال درخواست به پایگاه داده بررسی می‌کنید که آیا مقدار مورد درخواست شما در memcached وجود دارد یا خیر در صورت موجود بودن اطلاعات را از مم‌کشد دریافت می‌کنید. در غیر این صورت مقدار را در کش memcahched برای استفاده بعدی دخیره می‌کنیم.

نصب و راه اندازی با php در سنت‌او‌اس:

ابتدا مخزن EPEL را به لیست مخازن سیستم اضافه می‌کنیم.

#rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

سپس با دستور زیر memcached و php-pecl-memcache و memcached-selinux را نصب می‌کنیم.

#yum install memcached php-pecl-memcache memcached-selinux

سپس فایل تنظیمات را ویرایش می‌کنیم.

#nano /etc/sysconfig/memcached

و فایل را به شکل زیر ویرایش می‌کنیم.

PORT="11211"
USER="memcached"
# max connection 2048
MAXCONN="2048"
# set ram size to 2048 - 2GiB
CACHESIZE="4096"
# listen to loopback ip 127.0.0.1, for network connection use real ip e.g., 10.0.0.4
OPTIONS="-l 127.0.0.1"

با دستورات زیر memcached را راه اندازی می‌کنیم.

# chkconfig memcached on
# service memcached start

سپس کد پی‌اچ‌پی پروژه خود را به شکل زیر ویرایش می‌کنیم.

$MEMCACHE_SERVERS = array(
    "10.1.1.1", //web1
    "10.1.1.2", //web2
    "10.1.1.3", //web3
);

$memcache = new Memcache();
foreach($MEMCACHE_SERVERS as $server){
    $memcache->addServer ( $server );
}

$huge_data_for_front_page = $memcache->get("huge_data_for_front_page");
if($huge_data_for_front_page === false){
    $huge_data_for_front_page = array();
    $sql = "SELECT * FROM hugetable WHERE timestamp > lastweek ORDER BY timestamp ASC LIMIT 50000";
    $res = mysql_query($sql, $mysql_connection);
    while($rec = mysql_fetch_assoc($res)){
        $huge_data_for_frong_page[] = $rec;
    }
    // cache for 10 minutes
    $memcache->set("huge_data_for_front_page", $huge_data_for_front_page, 0, 600);
}

// use $huge_data_for_front_page how you please

ابتدا آی‌پی‌های سرورهای memcached را در آرایه مشخص می‌کنیم. سپس یک نمونه جدید از memcache می‌سازیم و سرورها را memcache معرفی می‌کنیم. در نهایت بررسی می‌کنیم اگر  دیتایی با کلید huge_data_for_front_page در memcache وجود داشت دیتا را دریافت می‌کنیم (یعنی اطلاعات قبلا درخواست شده و در کش ذخیره شده) در غیر اینصورت از پایگاه داده کوئری می‌گیریم و نتیجه را در پایگاه داده ذخیره می‌کنیم. مدت زمان باقی ماندن کش را بروی ۶۰۰ ثانیه و یا ده دقیقه تنظیم می‌کنیم.

memcached و سی‌ام‌اس ها: بسیاری از سی‌ام‌اس‌های آزاد و متن‌باز به صورت پیش‌فرض و یا با کمک پلاگین می‌توانند با memcached کار کنند.

برای وردپرس باید پلاگین memcached نصب شود.

کاربران دروپال با استفاده از پلاگین memcached  می‌توانند از مم‌کشد استفاده کنند.

وی‌کی‌مدیا به صورت پیش‌فرض از مم‌کشد پشتیبانی می‌کند.

امنیت: memcached هیچ مکانیزم امنیتی برای تایید کاربران ندارد! هر کاربری با دانستن شماره پورت و آدرس سروری که memcached روی آن در حال اجراست می‌توانند براحتی به دیتابیس شما دسترسی پیدا کند و اطلاعات شما را پاک کند، تغییر دهد و یا سرقت کند. بنابراین در هنگام راه‌اندازی باید سیستم را با دیواره آتش امن کرد پورت memcached را از پورت پیش فرض ۱۱۲۱۱ به پورت ناشناس دیگری تغییر داد و همچنین دسترسی به سرور و پورت را از خارج سیستم و شبکه مسدود کرد.

برنامه‌های جانبی: با استفاده از برنامه memcached-tool IP_ADDRESS:Port می‌توان وظعیت memcached را در سرور مشاهده کرد.

memcached-tool 127.0.0.1:11211

 

MemcacheDB: یک دیتابیس بر پایه memcached است که امکان ذخیره سازی اطلاعات را بصورت پایا فراهم کرده.

اطلاعات بیشتر را در سایت پروژه بخوانید. 

امتیاز شما

مایلید هر دو هفته یک ایمیل مفید دریافت کنید؟

ما را در شبکه‌های اجتماعی دنبال کنید

همچنین شاید دوست داشته باشید!

ساخت Swap File در لینوکس

راهنمای ساخت و حذف Swap File در لینوکس

0
Swap File نجات‌دهنده آبروی RAM جلوی کاربر است؛ فایل سیستم کوچکی که هنگام کم آوردن حافظه RAM، وارد صحنه شده و مسئولیت ذخیره داده‌ها را…

نظرات کاربران

5 دیدگاه. دیدگاه تازه ای بنویسید

  • میشه در مورد APC و Xcache هم مطلب بذارید؟

    پاسخ
  • سلام
    آیا memcached قابل راه اندازی در هر سرورس هست؟

    پرستاشاپ هم به صورت پیش فرض این قابلیت را دارد که قابل فعال سازی است

    پاسخ
    • مهدی عطائیان
      10 شهریور 1392 12:47

      بیشتر CMS ها پلاگین برای memcached دارند. در صورتی که CMS پلاگین نداشته باشه به راحتی میشه پلاگین براش نوشت.

      پاسخ
  • لینک هایه مخزن EPEL مشکل دارند

    پاسخ

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

نشانی ایمیل شما منتشر نخواهد شد.

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
شما برای ادامه باید با شرایط موافقت کنید

فهرست