بررسی nginx (دریافت پیوندک)

نوشته شده در تاریخ: 25/06/93 | نویسنده:هادی شهیدی

nginx

آپاچی (Apache) برنامی اپن سورس برای وب سرور است که در سال 1995 متولد شده است.
این وب سرور به دلیل کاربرد وسیعی که داشته است و ماژول های فراوانی که برای آن بصورت رایگان طراحی شده است تبدیل به محبوب ترین وب سرور برای مدیران هاست و سرورها شده است.

این وب سرور به عنوان اولین و وب سرور مایکروسافت با عنوان IIS در رده دوم برای سرورها مورد استفاده قرار گرفته است.

عمده محبوبیت Apache به دلیل ماژولی با عنوان mod_jk برای استفاده در جاوا و JSP در سرورهای TOMCAT بوده است. البته ماژول mod_php نیز ماژول محبوبی است که باعث میشود پی اچ پی روی سرور بدون نیاز به اجرا cgi اجرا شود.

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

انجین ایکس (NginX) یک وب سرور جوانتر است که با هدف پوشش مشکلات آپاچی و بهبود کیفیت در پاسخگویی به درخواست های وب سرور طراحی شده است.

Nginx بصورت opensource و رایگان در دسترس است اما نسخه ای همراه با پشتیبانی با عنوان Nginx Plux هم در دسترس است که باید خریداری شود.
Nginx میگوید بر اساس مقاله ای نوشته  Daniel Kegel برای پاسخگویی به 10000 کانکشن با منابع کمتر طراحی شده است.
Nginx بصورت event base طراحی شده است در حالی که Apache بر اساس Process ها و Threads ها کار میکند.

آپاچی چگونه کار میکند ؟

آپاچی برای پاسخگویی به ارتباطاتی که روی وب سرور درخواست میشود تعداد زیادی Process ایجاد میکند و این پروسز ها مقدار زیادی از حافظه سرور را مشغول میکند.بنابراین مدیران شبکه هاست با استفاده از محدود کردن این Process ها میزان استفاده از Ram را کنترل میکنند.بنابراین کارکرد آپاچی بسیار وابسته به میزان حافظه ای است که در سرور هاست وجود دارد.در صورت ایجاد تعداد زیادی Connection روی سرور هاست که از آپاچی استفاده میکند در نهایت باعث استفاده از دیسک برای پوشش کمبود حافظه سرور میشود.این جابجایی اطلاعات روی حافظه و دیسک باعث کند شدن ارتباط میشود.
در نهایت ارتباطات اضافه تر هم توسط آپاچی قطع میشود.

آپاچی در دو حالت موسوم به pre-forked و worker multi-process یا MPM کار میکند

nginx چگونه کار میکند ؟

nginx بصورت کاملا متفاوتی با آپاچی کار میکند بدین صورت که مدیر هاست مشخص میکند که چه تعداد worker باید کار کنند و هر کارگر یا worker خود به تعداد زیادی درخواست پاسخگویی میکند .

nginx همچنین از یک Cache داخلی برای خواندن اطلاعات از دیسک و بارگذاری آن در هنگام درخواست استفاده میکند.

نحوه کارکرد nginx بدین صورت است که سورس کد برنامه به سمت کابر ارسال میشود و در این هنگام ماژول های مختلفی که در nginx وجود دارد مانند proxy یا load balancing یا غیره سورس را کامپیال و به کاربر ارسال میکنند.برای PHP هیچ ماژولی وجود ندارد و nginx بصورت داخلی از کدهای PHP پشتیبانی میکند.

در تصویر زیر دیاگرام کارکرد nginx به نمایش گذاشته شده است.

دیاگرام کار nginx

دیاگرام کار nginx

همانطوری که در دیاگرام فوق مشاهده میکنید nginx برای پاسخگویی به application server یا python یا ruby از fastcgi استفاده میکند. برای پاسخگویی به وب سرور هم از ماژول داخلی ht_core استفاده میکند.

 

چه زمانی Apache بر Nginx مزیت دارد ؟

آپاچی بصورت پیش فرض با زبان های برنامه نویسی PHP, Python, Perl منتشر میشود . ماژول هایی مانند mod_php برای زبان برنامه نویسی PHP و mod_python برای زبان برنامه نویسی python در آپاچی وجود دارند و اجرای زبان ها با این ماژول ها بسیار سریعتر و کارآمدتر از مد CGI و FASTCGI است و این بدلیل آن است که برای هر درخواست لازم نیست برنامه مربوطه بارگذاری گردد.

پس بنابرین زمانی که از python یا ruby استفاده میشود آپاچی اولویت بیشتری دارد. برای زبان برنامه نویسی پی اچ پی تفاوتی وجود ندارد و nginx هم بصورت داخلی از پی اچ پی پشتیبانی میکند.

 نمودار مقایسه وب سرورها برای استفاده از RAM

مقایسه وب سرورها در استفاده از حافظه RAM

مقایسه وب سرورها در استفاده از حافظه RAM

 

مقایسه وب سرور ها در پاسخگویی به درخواست ها

مقایسه وب سرور ها در پاسخگویی به درخواست ها

مقایسه وب سرور ها در پاسخگویی به درخواست ها