چگونه کارایی سرور را با استفاده از vaish افزایش دهیم

خرید بک لینک

رای بدهید!

Vaish cache یک شتاب دهنده http و پروکسی معکوس است که توسط Danish مشاور و توسعه دهنده اصلی Freebsd به همراه توسعه دهنده های دیگر در Norwegian Linpro AS ایجاد و در سال 2006 منتشر شد. طبق گفته سایت pingdom.com، سایتی که روی کارایی وب تمرکز دارد، در سال 2012 وارنیش (Vaish)به عنوان افزایش دهنده سرعت وب در بین تمام توسعه دهندگان و وب سایت ها معروف بود و هم اکنون در سایت هایی مانند Wired, SlideShare, Zappos, SoundCloud, Weather.com, Business Insider, Answers.com, Urban Dictionary, MacRumors, DynDNS, OpenDNS, Lonely Planet, Technorati, ThinkGeek and Economist.com از آن استفاده می کنند.

Vaish تحت مجوز BSD لایسنس شده است . vaish یک لایه تجاری به نام vaish plus هم دارد که روی مشتریان سازمانی تمرکز کرده است و ویژگی های منحصر به فرد و ماژول ها و پشتیبانی به موقع را ارائه می دهد.

اگر چه راه حل های دیگری مانند shine هم وجود دارد اما vaish یک راه حل بهتری است که می تواند باعث بهبود چشمگیر سرعت وب سایت، کاهش بار اضافی برنامه ها روی پردازنده های سرور شود و حتی یک برنامه برای حفاظت از حملات DDOS هم ارائه می دهد. سایت keyCDN پیشنهاد می کند که آنرا روی سرور اصلی قرار دهید. در سایت های پر بازدید می توانید vaish را روی یک سرور اختصاصی پیکربندی کنید و بدین ترتیب مطمئن می شوید که سرور اصلی از درخواست های زیاد کاربران تاثیر نمی گیرد.

وارنیش (Vaish) چگونه کار می کند؟

Caching معمولا با نگهداری خروجی از قبل محاسبه شده یک برنامه در حافظه یا روی دیسک کار می کند و باعث می شود که محاسبات سنگین با هر درخواستی که از سوی کاربر می آید به طور مداوم محاسبه نشود. Web cache می تواند روی کلاینت (کش مرورگر) یا یک سرور نگهداری شود. Vaish از حالت دوم استفاده می کند. معمولا طوری پیکربندی می شود که بتواند بر درخواست هایی که از طریق پورت استاندارد http یعنی پورت 80 رد و بدل می شود گوش دهد. و سپس منابع درخواست شده کاربران را به آنها ارسال می کند. به محض اینکه یک url و یک مسیر درخواست شود، vaish درخواست را از سرور اصلی گرفته و آنرا برای بیننده سایت آماده می کند، که به این فرآیند cache miss گفته می شود، که بسته به تنظیمات vaish می توان آنرا از هدر http Reponse خواند.

vaish miss

طبق داکیومنت آن:

هنگامی که یک آبجکت، هر نوع محتوا مثل عکس یا یک صفحه در cache ذخیره نشود ما با حالتی روبرو می شویم که اصطلاحا به آن cache miss گفته می شود که در این مورد vaish می تواند محتوا را از وب سرور گرفته، آن را ذخیره و یک کپی از آن را به کاربر تحویل دهد و آنرا برای درخواست های آتی در کش ذخیره نماید. هنگامی که یک url مشخص یا یک منبع توسط vaish کش شده و در حافظه ذخیره شود، می توان آن منبع را به طور مستقیم از رم سرور درخواست کرد و نیازی نیست که هر بار از سرور اصلی آن منیع را درخواست کرد. Vaish شروع به تحویل دادن یک cache hit در عرض چند میکروثانیه می کند.

vaish hit

که به این معنی است که نه سرور اصلی و نه وب اپلیکیشن ها که شامل دیتابیس هم می شوند نیازی به پاسخ به درخواست هایی که از طرف کاربران می آیند ندارند. حتی نیازی نیست آنها بدانند که آدرس در خواست ها در کش ذخیره شده اند. در این مورد ما از vaish به عنوان یک load balancer استفاده کردیم که طوری پیکربندی شده اند تا به پورت های غیراستاندارد مثل 8888 گوش دهند، و vaish آنها را از آدرس و پورت خودشان آگاه می کند.

ویژگی های Vaish

Vaish اصطلاحا Theaded است و مطابق گزارش ها قادر می باشد که بیش از ۲۰۰۰۰۰ درخواست در ثانیه را تنها روی یک نمونه (instance) مدیریت کند. اگر vaish به درستی پیکربندی شود تنها محدودیت برنامه وب شما توان شبکه و میزان رم خواهد بود.

Vaish با VMODS گسترش پیدا می کند. این ها ماژول هایی هستند که از کتابخانه استاندارد استفاده کرده و عملکرد vaish را افزایش می دهند. لیست جامعه کاربری که به توسعه VMODS کمک می کنند در اینجا آمده است. آنها کارهایی از قبیل تغییر هدر تا اسکریپت نویسی به زبان lue، روش های کاهش درخواست ها، احراز هویت و مسائلی از این قبیل انجام می دهند.

Vaish یک زبان domain-specific مختص به خود به نام VCL دارد. VCL یک روش جامع برای پیکربندی ارائه می دهد.

vcl scheme

هنگامی که ما یک وب سایت دینامیک با صدها یا هزاران صفحه به همراه مسیرهای مختلف را با پارامترهای کوئری Get کش می کنیم، می خواهیم بعضی از آنها را از داخل کش خارج کنیم یا نقش های cache-expiration متفاوتی را برای آن تنظیم کنیم. بعضی مواقع می خواهیم که درخواست های Ajax را کش کنیم، یا آنها را از کش خارج کنیم. این کار از یک پروژه تا پروژه دیگر فرق می کند و نمی توان یک روش از قبل طراحی شده برای آن ارائه داد. بعضی مواقع ما می خواهیم که Vaish تصمیم بگیرد که بسته به هدر درخواست، چه کاری را انجام دهد.

بعضی مواقع ما می خواهیم با تنظیم یک کوکی مشخص درخواست ها را مستقیما به back-end ارسال کنیم. جمله زیر از Vaish Book آورده شده است:

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

Vaish یک مجموعه ای از ابزارها برای نظارت و مدیریت سرورها دارد که در زیر به توضیح مختصر برخی از آنها می پردازیم:

vaishtop: که به ما اجازه می دهد url های درخواست شده به همراه تعداد دفعات درخواست را مانیتور کنیم.

vaishncsa: که برای چاپ log های مربوط به حافظه اشتراکی Vaish به اختصار VSL استفاده می شود و موارد مربوط به یک دامنه و زیر دامنه های خاص را نشان می دهد.

vaishhist: حافظه اشتراکی vaish یا VSL را خوانده و یک هیستوگرام زنده از توزیع آخرین تعداد درخواست ها را نشان می دهد و در نهایت یک خلاصه ای از عملکرد سرور و کارایی back-end آن را به ما نشان می دهد .

vaishtest: که برای تست فایل های پیکربندی VCL و توسعه VMODS استفاده می شود.

vaishstat: که یک آماری را درباره instance های Vaish را نشان می دهد.

vaishstat

vaishlog: که برای گرفتن اطلاعاتی درباره کلاینت ها و یک درخواست خاص استفاده می شود.

نرم افزار Vaish مجموعه ای از راه حل های تجاری و پولی را هم ارائه می دهد که یا در قسمت بالای حافظه کش ساخته شده و یا کاربردهای آنرا گسترش می دهد و به نظارت و مدیریت بهتر کمک می کند. برخی از آنها عبارتند از Varish Api Engine ،Vaish Extend ،Akamni connector for vaish، vaish Administration consoleیا به اختصار VAC، و Vaish Custom Statistics یا به اختصار VCS

آموزش نصب Vaish

داکیومنت Vaish روش نصب Vaish را روی سیستم های مختلف توضیح داده است. ما در این مقاله قصد داریم آنرا روی ubunti 16.4 LTS نصب کنیم. سایت Packagecloud.io دستورالعمل هایی برای بروزرسانی مخازن اوبونتو و همچنین نصب نسخه 5 Vaish دارد که برای استفاده از آنها باید کد زیر را در خط فرمان یا ترمینال لینوکس اوبونتو اجرا کنید:

سپس کد زیر را به فایل تازه ایجاد شده در مسیر /etc/apt/sources.list.d/vaishcache_vaish5.list اضافه می کنیم:

سپس دستورهای زیر را اجرا خواهیم کرد:

همچنین می توانیم یک وب سایت وردپرس را روی Nginx آزمایش کنیم. ابتدا پورت پیش فرض Nginx را از 80 به 8080 تغییر می دهیم. که این پورتی است که Vaish انتظار داردback-end روی آن اجرا شود. که این کار را با اضافه کردن خط های زیر به هاست مجازی Nginx انجام می دهیم:

سپس Vaish را پیکربندی می کنیم و /etc/defaut/vaish را ویرایش کرده و پورت 6081 را به جای 80 (پورت پیش فرض وب) قرار می دهیم:

سپس باید /lib/system/system/vaish.service را تغییر دهیم و همان جایگزینی ها را در اینجا نیز انجام بدهیم:

سپس Nginx و Vaish را ریستارت می کنیم:

هشدار: به دلیل برخی ویژگی ها Vaish معمولا باید برای خواندن تمام فایل های پیکربندی که ما اضافه کردیم ریستارت شود و این کار با این روش فوق شود نه با دستور service vaish start.

حال ما سرعت و میزان پاسخ دهی وب سایتمان را با سایت های Locust و pingdom tools آزمایش می کنیم.

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

نمودار نتایج برای Nginx:

locust nginx

نمودار نتایج برای Nginx به همراه Vaish:

locust vaish

نتایج pingdom هم خیلی خوب بود.

نتایج pingdom برای Nginx، تست شده از کالیفرنیا:

pingdom nginx

نتایج pingdom برای Nginx به همراه Vaish، کالیفرنیا:

pingdom vaish cal

همچنین به TTFB مربوط به هر کدام دقت کنید

Nginx تنها:

nginx cal

Nginx به همراه Vaish:

vaish

حتی اگر بخش صورتی را که مربوط به جستجوی DNS است را نادیده بگیریم هنوز هم یک تفاوت آشکار وجود دارد.

سادگی در نصب

Vaish اهمیتی نمی دهد که چه چیزی به پورت8080 گوش می دهد (در صورت نیاز ما می توانیم این پورت پیش فرض را تغییر دهیم).

این بدان معنی است که برای نصب آپاچی یا دیگر برنامه های سرور باید کار یکسانی را انجام بدهیم. تنها کاری که باید بکنیم این است که آن را طوری پیکر بندی کنیم که وب سرور به جای پورت 80 به پورت 8080 گوش کند.

نصب Vaish با Node.js

روی سرور موجود، جایی که قبلا Vaish را نصب کردیم، یک برنامه ساده Hello world در Node ایجاد می کنیم. ما همچنین Node.js و پکیج های NPM را نصب می کنیم:

سپس یک برنامه ساده Hello world را درNode اجرا می کنیم تا به پورت 8080 گوش دهد:

سپس پکیج منیجر Node به نام pm2 را نصب می کنیم تا قادر باشیم برنامه خود را اجرا کنیم:

نکات تکمیلی

برای اینکه قادر به کنترل اینکه آیا درخواست های ما در حال کش شدن در مرورگر هست یا نه باید کدهای زیر را در فایل پیکربندی Vaish و در بلاک Sub VCl_deliver اضافه کنیم:

سپس ما می توانیم بازخورد این کار را در هدر بازگشتی از سرور ببینیم که یا Hit است و یا Miss:

response headers

و به عنوان یک هشدار دیگر: vaish (یا حداقل نسخه متن باز آن) از SSL پشتیبانی نمی کند، که این مورد را paul سازنده Vaish چندین بار تکرار کرده است. پس هنگامی که نیاز داشتید از Vaish و https استفاده می کردید حتما از یک پراکسی دیگر برای فسخ SSL در نظر بگیرید، مثل haproxy یا hitch که در خود Vaish قرار دارد.

نتیجه گیری

در این مقاله سعی داشتیم که یک خلاصه ای درباره Vaish را ارائه بدهیم و خیلی وارد جزئیات نصب، مانیتور و مدیریت نشویم. تنظیم عملکرد سرور به خودی خود یک علم است و ارائه مجموعه ای از موارد استفاده و نصب آن نیاز به یک مقاله دیگر دارد.

کارت ویزیت لایه باز...

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

برچسب: نویسنده: بازدید: 194 تاريخ: چهارشنبه 20 تير 1397 ساعت: 16:51

صفحه بندی