جمعه, ۷ اردیبهشت, ۱۴۰۳ / 26 April, 2024
مجله ویستا

کارایی وب سرور


امروزه در دنیای ما اطلاعات نقش بسیار مهمی دارند و بسیاری از این اطلاعات توسط اینترنت انتقال پیدا می كنند. متداولترین پروتكلی كه برای انتقال اطلاعات از آن استفاده می شود، پروتكل HTTP است. پروتكل HTTP به عنوان پروتكلی سریع، قوی و با باركم بر روی CPU و حافظه سرور طراحی شده است. برای جلوگیری از كاهش پیدا كردن كارایی وب بر اثر استفاده بسیار زیاد از این پروتكل، باید كارایی را بهینه سازی كرد.
دو استراتژی اصلی برای بهینه سازی كارائی وجود دارد:
۱- بهینه سازی كارائی وب سرور
۲- بهینه سازی كارائی پروتكل HTTP
در این مقاله تعدادی از روشهای بهینه سازی كارائی وب سرور به طور اختصار شرح داده شده است.
ارزیابی كارایی
كارائی وب سرورها به چند عامل بستگی دارد: سخت افزار محیط عملیاتی سرور، پروتكل شبكه، ازدحام، پهنای باند و سخت افزارهای شبكه،CLIENT ها و...
برای ارزیابی كارائی موارد زیر را باید مورد بررسی قرارداد:
۱- تعداد درخواست در ثانیه (RPS)
۲- توان عملیاتی (THROUGHPUT)
۳- زمان رفت و برگشت (Round Trip Time)
۴- خطاها
۱- RPS
تعداد درخواست در ثانیه برابر است با مقدار درخواستهای HTTP در هر ثانیه كه سرور توانایی سرویس دادن به آنها را دارد. این شامل ایجاد یك اتصال ، سرویس دهی و قطع كردن اتصال می شود. برای اندازه گیری این مقدار سرور را باید با بارهای مختلفی تحت شرایط مختلف تست كرد. این تست ها باید شامل فایلهای كوچك، متوسط و بزرگ،HTML های استاتیك و دینامیك ، API ، CGI و بانكهای اطلاعاتی باشد. RPS نشان دهنده قابلیت اطمینان سرور و سایتهایی كه سرویس می دهد می باشد.
۲- THROUGHPUT
THROUGHPUT ماكسیمم مقدار داده ایست كه سرور می تواند در یك زمان خاص از تمام اتصالات موجود بفرستد. این مقدار به شبكه بین سرویس دهنده و سرویس گیرنده، پهنای باند شبكه، روترها،Gateway ها و… بستگی دارد.
۳- RTT
RTT زمانی است كه سرور به هر درخواست سرویس گیرنده پاسخ می دهد. این زمان از لحظه‌ای كه درخواست فرستاده می شود تا وقتی كه سرویس داده می شود محاسبه می گردد و اگر بیش از یك یا دو ثانیه باشد از نظر كاربر كند به نظر می رسد. ازدحام در شبكه باعث زیاد شدن RTT می‌شود.
۴- خطا
این مقدار برابر با مقدار خطایی است كه در ثانیه بر اثر مقدار درخواستهای HTTP گم شده یا درخواستهایی كه سرور نتوانسته به آنها پاسخ دهد بوجود می آید و قابلیت اطمینان شبكه به آن بستگی دارد.
كارائی چگونه اندازه گیری می شود
كارائی سرورها را می توان با داده های عملیاتی یا تستهای هوشمند ارزیابی كرد. تحلیل داده‌های عملیاتی شامل بررسی LOG های سرور، سیستم عامل سرور و نرم افزار سرور می‌شود. بنچ مارك(Benchmark) كردن یكی از روشهای تست های كارائی است. بنچ ماركینگ وب سرور در اصل شبیه سازی حالات دنیای واقعی است كه با دادن یك سری داده به یك برنامه یك سری نتایج را حاصل می كند. به همین دلیل هم داده ها و طراحی برنامه باید بسیار دقیق باشد. سه نكته اصلی را در هنگام طراحی بنچ ماركهای وب باید در نظر گرفت. اولین نكته متدهای HTTP مثل GET، PUT وPOST است. نكته دوم اندازه و تعداد فایلهایی است كه باید بازیابی شود زیرا به عنوان مثال اگر تعداد آنها كم باشد سرور می تواند آنها را درCache نگهداری كرده و در نتیجه نتایج درستی بدست نخواهد آمد. سومین مسئله توزیع درخواستهای سرویس گیرنده در طول زمان است. گاهی اوقات در یك برهه زمانی كم به درخواستهای زیادی باید سرویس داده شود در صورتیكه در برهه زمانی دیگر درخواستهای كمی وجود دارد. به جز این سه نكته اصلی به فاكتورهای دیگری نیز مثل تعداد درخواست كننده های سیستم، شبكه‌های كند (پر ازدحام ، با پهنای باند كم )، تصاویر، صفحات دارای CGI، API، مسائل امنیتی (مثل شناسایی و رمزگذاری) و… نیز باید توجه كرد.
روشهای بهینه سازی كارائی وب
در اینجا روشهای اصلی بهینه سازی كارائی وب توضیح داده می شود:
۱- استفاده از Standalone Server Daemon به جای Inetd
سرورهای Standalone هنگامی كه صدا زده شوندstart (شروع) شده به همه اتصالات سرویس داده و وقتی كه توسط اپراتور از بین برده شوند یا سیستم خاموش شود Terminate (پایان) می‌شوند. استفاده از Inetd باعث می شود كه برای سرویس دهی به تعدادی از Port ها گوش داده شود وقتی كه درخواستی درPort ۸۰ بوجود آمد، شروع به كار كرده، سرویس را داده و آنگاه پایان می پذیرد. پروسه آماده سازی و شروع به كار در Inetd زمان قابل توجهی را می گیرد كه باعث می شود توان عملیاتی تقریبا نصف شود.
۲- استفاده از Thread یاProcess Pool به جای Fork/Exec
در معماری “Process- per-Connection” برای هر اتصال یك پروسه بوجود می آید و به دلیل اینكه درخواستهای وب بسیار كوتاه هستند زمان زیادی صرف بوجود آمدن پروسه میشود. استفاده از Thread یا استخر پروسه ها این زمانهای اضافی را بسیار كاهش می دهد. در روش استفاده از استخر پروسه ها ، هنگامی كه سرور شروع به كار می كند یك سری پروسه كمكی بی كار به وجود می آیند كه در هنگام بوجود آمدن هر اتصال مورد استفاده قرار می‌گیرند. وقتی كه پروسه آزاد دیگری وجود نداشت یك یا یك گروه پروسه كمكی جدید بوجود می آیند كه با تمام شدن كارشان از بین می رود. یك روش دینامیك تر برای استخر پروسه ها روشی است كه تعداد پروسه های بیكار را می‌شمارد. هنگامی كه تعداد آنها كمتر از یك مقدار مینیمم از قبل تعریف شده شود پروسه های جدیدی بوجود می آید. وقتی كه تعداد پروسه های كمكی بیش از یك حد ماكسیمم شود اضافه ها از بین می روند. Thread ها سریع تر از پروسه ها هستند و منابع كمتری از سیستم را نیز به خود تخصیص میدهند. به همین دلیل نیز استفاده از Multithreading روش خوبی در پاسخ گویی به درخواستهای وب است.
۳- استفاده از متدهای HTTPوAPI ها به جای CGI
استفاده از متدهای HTTP و اجرای دستورات به عنوان Thread های سرور، كارائی بسیار بیشتری از اجرای CGI در یك پروسه جداگانه دارد. استفاده از API در هنگام برقراری ارتباط بین سرور و اسكریپت نیاز به تماس با سیستم عامل را از بین می برد.
۴- استفاده از Cacheاینترنتی سلسله مراتبی : Proxy Server
در معماری Cache سلسله مراتبی یك پروكسی سرور برای Cacheكردن و سرویس دادن به اشیاء داده استفاده می‌شود. هنگامی كه Cache درخواست URLی را دریافت كرد در صورتی كه آن را داشت آن را برمی‌گرداند. اگر شیء مورد نظر در Cache نبود یك RPC برای Cache های همسایه و Cache های سطح پایین تر می فرستد و همزمان یك درخواست برای Home Site شیء مورد نظر ارسال می كند شیء را از هر كدام از این دو كه سریعتر جوا ب دادند گرفته و بر می‌گرداند. این روش تاخیر و ترافیك را تا حد قابل توجهی كاهش می دهد. تنها مشكل این روش صفحات وب دینامیك است كه همیشه باید داده های تازه داشته باشند.
۵- استفاده از سیستم های توزیع شده با كمكDPR
استفاده از سیستم های توزیع شده امروزه یكی از رایج ترین روشهای بالا بردن كارائی سرورهای وب است یك روش قدیمی برای استفاده از این سیستم ها داشتن یك نود مركزی است كه همه درخواستها به آن رفته و به سرورهای مورد نظر متصل می شوند. روش جدیدتری برای استفاده از سیستم های توزیع شده وجود دارد كه DPR نام دارد. در این روش همهHost ها در سرویس دادن و مسیر یابی با هم همكاری می كنند. در روشهای قدیمی به دلیل وجود یك نود مركزی بار اصلی روی آن نود قرار می گرفت و اضافه كردن هر Host بار نود مركزی را افزایش می‌داد. ولی در روش DPR با اضافه شدن هر Host در اصل یك مسیریاب نیز به سیستم اضافه می شود و سرعت بسیار بالا می رود.
۶- سایر روشهای بهینه سازی كارایی وب سرور
به جز روشهایی كه برای بهینه سازی وب سرور به آنها اشاره شد موارد دیگری نیز می توانند در بهبود كارایی وب سرور موثر باشند. آنها شامل موارد زیر می شوند:
اضافه كردن اندازه Cache و RAM
استفاده از درایوهای بزرگتر و سریع تر
جلوگیری از استفاده بررسی های DNS به صورت عكس
نصب همه قسمتهای سیستم عامل
اضافه كردن طول صفlisten
افزایش تاخیر ارسال دوباره برای سرویس گیرنده های كند
و ...
با استفاده از روشهای فوق می توان كارائی وب سرور را افزایش داد كه این باعث بهینه شدن كارائی وب می‌شود.


همچنین مشاهده کنید