تقسیم بار بر روی وب سرورها و مدیریت ترافیک سایت های پر بازدید
مدیریت ترافیک سایت های پر بازدید,تقسیم بار بر روی وب سرورها , مدیریت ترافیک ,سایت های پر بازدید,وب سرور آپاچی,وب سرور nginx,وب سرور,وب سرور iis,وب سرورها,وب سر
 

یادتان هست نتایج کنکور سازمان سنجش تا چند ساعت بعد از انتشار نتایج به دلیل شلوغی بیش از حد، قابل دسترس نبود؟ با وجود راه حل های فراوان متن باز، چرا بگذاریم چنین اتفاقی مجددا تکرار شود؟

در دنیای اینترنت، بخش اعظم خدمات وب و از طرفی پس زمینه ی اکثر خدمات موبایل، بر دوش  مدیریت ترافیک سایت های پر بازدید,تقسیم بار بر روی وب سرورها و مدیریت ترافیک سایت های پر بازدید,وب سرور

  1. مرورگر کاربر به Apache متصل میشود و درخواست را ارسال میکند.
  2.  برنامه ی Apache درخواست را دریافت میکند.
  3. در صورتی که فایل ثابتی مانند یک عکس درخواست شده باشد، آن را خودش تحویل میدهد.
  4. در صورتی که فایل غیر ثابتی مانند یک برنامه ی PHP فراخوانی شده باشد، آن را به modphp جهت پردازش تحویل میدهد.
  5. PHP درخواست را پردازش نموده و اطلاعات مورد نیاز را از پایگاه داده (عموما MySQL یا PostgreSQL) درخواست میدهد.
  6. MySQL به ازای هر درخواست، سوال (Query) مورد نظر را بررسی و جواب را محاسبه کرده و تحویل میدهد.
  7. نتیجه نهایی درخواست کاربر توسط PHP پردازش شده و به Apache تحویل میشود.

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

برنامه ی Apache که همگان سرویس دهی وب را با این اسم میشناسند، مدت ها به جامعه ی سروری خدمت کرده است اما این روزها ادمین سایت های پر بازدید به سمت نرم افزارهای سبک تری روی آورده اند. اولین مشکل این است که برنامه ی Apache پر از امکانات مختلف است، که همین قضیه میزان استفاده از حافظه و پردازنده را در آن بالا میبرد که در مقایسه، برنامه های سروری مانند nginx (که اِن جین ایکس خوانده میشود) یا Lighttpd بسیار سبک تر و سریع تر هستند و حافظه ی کمتری مصرف میکنند.

جای دیگری که میتوانیم در توان پردازشی صرفه جویی کنیم، نحوه ی پردازش PHP ست. ما باید تمام تلاش خود را انجام بدهیم که تا جایی که ممکن است، کمتر درگیر پردازش یک صفحه ی پویا شویم. این کار هم منابع پردازنده و هم منابع MySQL را اشغال خواهد کرد. و در نهایت اگر صفحات پویا را پردازش کردیم، در بهترین و بهینه ترین حالت (و با کمترین زمان) پاسخ آن را محاسبه کنیم.

روش های استفاده از PHP، مزایا و معایب

 مدیریت ترافیک سایت های پر بازدید,تقسیم بار بر روی وب سرورها و مدیریت ترافیک سایت های پر بازدید,وب سرور

بهینه سازی ۱ – استفاده از Varnish Cache در بیرونی ترین لایه

تا اینجا معماری خوبی چیده ایم. به شما اطلاع میدهند که بخش تجاری شرکت، میخواهد یک تیزر تبلیغاتی در تلویزیون پخش کند. خب قطعا کاربران زیادی به سایت می آیند. شما برای اینکه این بار بزرگ را تحمل کنید، به واحد سخت افزار اطلاع میدهید که پردازنده و رم سرورها را ارتقا بدهند. تبلیغات آغاز میشود و ناگهان میبینید که پروسه های php با سرعت زیادی در حال رشد هستند و بعد از مدتی سرور پاسخگوی این تعداد کاربر همزمان نیست.

بیایید ببینیم به جای این همه کار، با خرج دادن کمی ذکاوت میتوانیم مشکل را حل کنیم یا نه. عموما کاربرانی که برای اولین به سایت شما مراجعه میکنند، با صفحات ثابت و مشابهی روبرو هستند. پس لزومی ندارد اگر شما مطلب جدیدی در هر ۵ دقیقه روی سایت منتشر نمیکنید، به ازای هر کاربری که ثانیه به ثانیه به سایت وارد میشود، یک بار پردازشگر PHP را درگیر کنید. نرم افزار Varnish برای چنین شرایطی بسیار مناسب است. این برنامه با توجه به آدرس ها و تعاریفی که به آن میدهید، جلوی  مدیریت ترافیک سایت های پر بازدید,تقسیم بار بر روی وب سرورها و مدیریت ترافیک سایت های پر بازدید,وب سرور

بهینه سازی ۲ – استفاده از memcached برای ذخیره سازی Session ها

صورت مساله ۱: با تقریب خوبی تمامی برنامه های تحت وب، کاربران خود را با استفاده از کوکی یا نشست (Session) شناسایی میکنند. به طور پیش فرض به ازای هر کاربر جدیدی که به سایت مجهز به نشست شما مراجعه می کند، یک فایل برای ذخیره کردن اطلاعات کاربر بر روی سیستم فایل شما ایجاد می شود. با زیاد شدن تعداد کاربران (مخصوصا اگر تاریخ انقضای هر نشست زیاد باشد)، تعداد زیادی فایل (آن هم در یک فولدر) ایجاد شده است که سرعت دسترسی به اطلاعات نشست هر کاربر را تا حد زیادی کند میکند.

صورت مساله ۲: شما دو سیستم مجزا راه اندازی کرده اید که پاسخ درخواست های PHP کاربران را پردازش کند. هر یک از این سیستم ها اطلاعات نشست کاربران را بر روی هارد خود نگهداری میکند. بنابراین اگر یک کاربر درخواستی به سیستم اول ارسال کند، و درخواست دوم به سیستم دوم محول شود، اطلاعات جداگانه ای برای یک کاربر در این دو سیستم ذخیره میشود. بنابراین می بایست به دنبال راهی باشیم که نشست های کاربران همگی در یک مکان ذخیره شود و هر دو سیستم از این منبع یکتا استفاده کنند.

شاید بد نباشد بدانید که PHP راه های بسیار زیادی غیر از نگهداری فایل، برای مدیریت نشست ها پشتیبانی میکند. اگر میزان اطلاعاتی که در هر نشست نگهداری میکنید زیاد نباشد، نگهداری این اطلاعات بر روی حافظه ی اصلی (RAM) یکی از سریعترین و بهترین روش ها محسوب می شود. ابزاری که برای اینکار استفاده می شود، memcached نام دارد. پس از نصب memcached در یک سیستم مشترک که همه ی سرورهای مربوط به PHP به آن دسترسی داشته باشند، میتوانید در تنظیمات PHP، ذخیره سازی اطلاعات نشست را به memcached محول کنید.

 مدیریت ترافیک سایت های پر بازدید,تقسیم بار بر روی وب سرورها و مدیریت ترافیک سایت های پر بازدید,وب سرور

بهینه سازی ۳ – جدا سازی و ارتقای منابع سخت افزاری

همیشه میتوانید با هزینه ی مالی بیشتر، سخت افزار خود را ارتقا بدهید. اما سخت افزارهایی که وحشتناک قوی باشند، وحشتناک گران هم هستند. بنابراین یک حرکت اقتصادی خود برای ارتقای سخت افزاری معماری شما این است که بخش های مختلف آن را بر روی رایانه های جداگانه راه اندازی و اجرا کنید. اولین و مهم ترین جداسازی که تمامی سایت ها میبایست انجام دهند، جدایی پایگاه داده از سیستم پردازشی وب است. نوع عملیاتی که در پایگاه داده انجام می شود به شدت با دیسک در ارتباط است و این موضوع، منابع کمی که برنامه های دیگر از جمله PHP از دیسک نیاز دارند را تحت تاثیر قرار میدهد. از طرفی اختصاص فضای جداگانه به MySQL به روند های پشتیبان گیری و بهینه تر عمل کردن این سرویس هم کمک میکند. البته در تصویر زیر من Varnish را هم جدا کرده ام تا بهینه سازی بعدی به عنوان پخش کننده ی بار (Load Balancer) راحت تر انجام شود.

تجربه: همانطور که گفته شد بیشترین منبع مورد نیاز برای سرورهای MySQL خواندن ها و نوشتن های اتفاقی (Random Write/Read) بر روی دیسک است. این روزها، هارد دیسک های SSD این کار را با هزینه ای اندک بسیار بهتر از هارد های سنتی انجام می دهند. پس استفاده از یک برند خوب SSD به صورت موازی (Raid Mirror) یک راه حل خوب برای منابع MySQL است.

 مدیریت ترافیک سایت های پر بازدید,تقسیم بار بر روی وب سرورها و مدیریت ترافیک سایت های پر بازدید,وب سرور

بهینه سازی ۴ – پخش بار محاسباتی بین چند سرور

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

 مدیریت ترافیک سایت های پر بازدید,تقسیم بار بر روی وب سرورها و مدیریت ترافیک سایت های پر بازدید,وب سرور

بهینه سازی ۵ – اگر فایلها تغییر کنند چه اتفاقی می افتد؟

 مدیریت ترافیک سایت های پر بازدید,تقسیم بار بر روی وب سرورها و مدیریت ترافیک سایت های پر بازدید,وب سرورتا جایی که فایلهای سرور شما تغییری نمیکند یا فایلی از کاربران دریافت نمیکنید، مشکلی با معماری بالا وجود ندارد. اما اگر میخواهید فایل از کاربران دریافت کنید یا فایلهای بین سرورهای پردازنده مشترک باشند، نگاهی به طراحی زیر (با استفاده از GlusterFS) بیاندازید. البته اگر تعداد فایلها و دریافت آنها زیاد باشد، بهترین کار راه اندازی (یا استفاده از) نوعی از سیستم توزیع محتوا یا CDN است که کاربران مستقیما برای دریافت فایلها با سرورهای CDN در ارتباط باشند.

 مدیریت ترافیک سایت های پر بازدید,تقسیم بار بر روی وب سرورها و مدیریت ترافیک سایت های پر بازدید,وب سرور

بهینه سازی ۶ – وقتی یک پایگاه داده کافی نیست

همانطور که از موضوع بخش برمی آید، تعداد تراکنش های پایگاه داده شما زیاد شده است. اما صبر کنید. قبل از اینکه سخت افزاری ارتقا بدهید یا توصیه های بعدی این بخش را پیاده سازی کنید، راجع به ایندکس ها در پایگاه داده مطالعه کنید. بسیاری از برنامه نویسان تا موفق می شوند داده ی خود را در پایگاه داده ذخیره کنند خوشحال می شوند و ادامه ی کار را انجام نمی دهند.

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

اما اگر دیگر از استفاده ی اصولی خود مطمئن هستید و همچنان تجارت شما در حال بزرگتر شدن است، باید به سمت استفاده از فناوری Replication در پایگاه داده بروید. با استفاده از این امکان، یک پایگاه داده ی دیگر میتواند با پایگاه داده اصلی هماهنگ شود. فقط در بیشتر نرم افزارها، امکان نوشتن فقط و فقط بر روی پایگاه داده اصلی وجود دارد و سرورهای Replicate میتوانند درخواست های خواندن اطلاعات را پاسخ بدهند. (که البته مشکل چندانی محسوب نمیشود، زیرا عموما درخواست های نوشتن و تغییر پایگاه داده بسیار کمتر از درخواست های خواندن هستند). تصویر زیر نمونه ای از این چینش را نشان می دهد.

 مدیریت ترافیک سایت های پر بازدید,تقسیم بار بر روی وب سرورها و مدیریت ترافیک سایت های پر بازدید,وب سرور

 مدیریت ترافیک سایت های پر بازدید,تقسیم بار بر روی وب سرورها و مدیریت ترافیک سایت های پر بازدید,وب سرور

علی نادعلیزاده

todco.ir

منبع : بخش کامپیوتر آکاایران
برچسب :