اگر تا به حال مدیریت یک سایت را بر روی یک Server اختصاصی حالا چه Dedicated یا VPS تجربه کرده باشین میدونین که انتخاب یک سرویس دهنده و تنظیمات درستش یکی از مهمترین چالش های مدیریت Server هست.
اولین نامی که در ذهن برای سرویس دهنده وب متبادر میشه قطعاً Apache هستش. آپاچی از سال ۱۹۹۵ تا کنون مقام اول در سرویس دهی به میلیونها وب سایت را بر عهده داشته ، کاربران بسیاری داره ، ماژول های زیادی در راستای بهبود و توسعه امکاناتش براش نوشته شده و در جامعه سورس باز هم جایگاه تعریف شده و مهمی داره. اما چه دلیلی باعث میشه که با این تفاسیر بخواهیم به سرویس دهنده های دیگه فکر کنیم ؟
آپاچی وقتی با ترافیک بالا روبرو میشه کند میشه و این موضوع دلیلی نداره جز افزایش Process ها که قاتل Memory هستند و علاوه بر اون این Process ها با ایجاد Thread ها بر جنگ دسترسی به منابع Memory و CPU دامن میزنن. حتی با وجود MPM هایی مثل worker و event علاوه بر pre_fork باز هم Apache با مشکلات Process ها و Thread هاش دست به گریبان هست و زمانی که ترافیک افزایش پیدا میکنه با کندی مواجه میشه و گاهی اوقات با توجه به تنظیماتش کلاً مانع از دسترسی کاربران به سایت میشه.
در مقابل Apache انتخاب های دیگه ای هم وجود داره که Nginx در بینشون اقبال بیشتری داشته اما چرا ؟ بر خلاف Apache که با ایجاد Process ها و Thread های جدید درخواست های کاربر را پاسخ میده ، Nginx به صورت Event Driven و Asynchronous با توجه به تنظیمات مدیر سیستم که تعداد Worker Process ها را تعین میکنه و هر Process فقط یک Thread داره و میتونه هزاران کاربر را پاسخگو باشه کار میکنه.این تفاوت عملکرد تأثیر خیلی زیادی داره و Nginx را Stable تر و سریعتر میکنه. همین افزایش سرعت باعث میشه بسیاری از مدیران سیستم به سمت Nginx تمایل پیدا کنند و محبوب بشه.
یکی از ایراد هایی که به Nginx گرفته میشه این هست که برای کار با محتوای دینامیک بر خلاف Apache که با ماژول هایی نظیر mod_php و mod_python و mod_rails و mod_rack میتونه مانع از اجرای هر بار Interpreter اون زبان بشه عمل میکنه و در این زمینه کند خواهد بود.
اخیراً دو تا پروژه وب سایت روی Server اختصاصی VPS را شروع کردم و با توجه به مطالبی که در مورد Nginx خونده بودم میخواستم امتحانش کنم و ببینم چقدر از Apache بهتر عمل میکنه. البته من با استفاده از php-fpm روی Nginx اصلاً مشکل سرعت برای php که در پاراگراف بالا اشاره کردم را احساس نکردم و در کل به نظرم خیلی بهتر از Apache جواب میده.مشکل بزرگی که داشتم عدم پشتیبانی از htaccess. برای همون بحث سرعت بود که تونستم به روش Nginx مشکلاتش را حل کنم.
شما هم میتونین روی سیستم Local خودتون Nginx را امتحان کنید و از سرعت بالاش در پروژه های بعدی بهره ببرید.
سلام مرسی از مقاله ی خوبتون
اگه امکانش هست ویژگی های ” آپاچی ترافیک سرور ” و ” هادوپ ” رو هم اضافه کنید
من معمولا تجربه هایی که به صورت عملی در مورد یک تکنولوژی یا نرم افزار دارم را به صورت یک پُست توی وبلاگم منتشر میکنم و در زمینه Hadoop و Apache Traffic Server هیچ تجربه کاری و حتی تحقیقی نداشتم .
برای دوستانی که ممکنه این نظر را بخونند و ندونن Hadoop و Apache Traffic Server چی هستند :
Hadoop بستری برای پردازش داده های حجیم در محیط ابری هست که به صورت متن باز توسط آپاچی ارائه میشه.
Apache Traffic Server یک Caching Server سریع و منعطف با قابلیت نوشتن Extension هست که البته به صورت تجاری ارائه شده.