یکی از سؤالاتی که مشتریان به ویژه مشتریانی که میخواهند آزمونهای گسترده و حساس با سیستم مدیریت آزمون آنلاین ما یعنی تستا بگیرند میپرسند، این است که تستا به چه هاستی با چه مشخصاتی نیاز دارد؟
با توجه به اینکه ما طی چند سال گذشته در هاستینگ آفتابگردان، هاست مورد نیاز انواع مشتری و به ویژه مشتریانی که از تستا برای برگزاری آزمونهای سراسری با صدها تا هزاران کاربرِ آنلاینِ همزمان استفاده میکنند را فراهم کردهایم، در این مطلب تجربیاتی را بیان میکنیم که نه تنها در مورد تستا بلکه در مورد اسکریپتهای دیگر هم کاربرد دارد:
۱- نیازمندیهای اولیه سرور:
اکثر اسکریپتهای نوشته شده به زبان PHP (مانند WordPress و Joomla و... که تستا نیز یکی از آنهاست) برای اجرا به چیزی جز نصب بودن PHP و MySQL روی سرور نیاز ندارند، که خوشبختانه بر روی اکثر سرورهای اشتراکی این دو مورد نصب است. دقت کنید که PHP هم بر روی سرورهای با سیستم عامل ویندوز نصب میشود و هم بر روی سرورهای با سیستم عامل لینوکس. (هر چند که بلاشک PHP بر روی لینوکس بسیار سریعتر و بهتر عمل میکند و پیشنهاد میکنیم اولویت شما استفاده از لینوکس به عنوان سیستم عامل باشد اما فراموش نکنید که در مجموع PHP بر روی هر دو بدون مشکل اجرا میشود)
اگر شما یک سرور مجازی یا اختصاصی اجاره و یا در سازمان خود راهاندازی کردهاید، باید PHP و MySQL را خودتان بر روی سرور نصب کنید.
نسخه PHP شما باید ۵.۳ به بالا باشد (تا این لحظه اکثراً ۵.۴ را نصب میکنند) و نسخه MySQL شما هم ۵.۵ به بالا.
دقت کنید که اگر سرور را خودتان پیکربندی میکنید، طبیعتاً به یک وبسرور نیز نیاز خواهید داشت. پیشنهاد ما این است که با پرداخت یک هزینه تقریباً کم از متخصصان هاستینگها بخواهید این سه نیازمندی را خودشان برایتان نصب کنند.
چه وبسروری انتخاب کنم؟
این روزها وبسرورهای بسیار زیادی در بازار وجود دارند (لیست آنها). اما باید دقت کنید که هر کدام از آنها برای یک نوع کاربرد طراحی شدهاند. برخی از مهمترین وبسرورها و کاربرد هر یک عبارتند از:
۱.۱- وبسرور آپاچی (Apache): این وبسرور، رایگان و قدیمیترین و طبیعتاً عمومیترین وبسرور است.
√ این وبسرور بیشتر برای کاربردهای معمولی و چه بسا فقط برای تست نرمافزار روی سیستم خودتان و یا برنامهنویسی تحت وب (ویژه طراحان وب) مناسب است. اگر شما قصد دارید از آن برای هاست سایت خود استفاده کنید و سایت شما ترافیک بالایی دارد، احتمالاً با مشکلات جدی مواجه خواهید شد.
۲.۱- وبسرور LiteSpeed: این وبسرور رایگان نیست (ماهانه حداقل حدود ۱۲۰ هزار تومان هزینه آن خواهد بود). شعار اصلی آن این است که: همیشه سختافزارِ قوی لازم نیست!
حقیقتاً شعار جالبی است و به خوبی از پس این شعار برآمده. یعنی گاهی اوقات شما بر روی یک سرور ساده با دو هسته و ۲ گیگابایت رم یک LiteSpeed نصب میکنید و میبینید دارد همان کاری را انجام میدهد که شما بدون لایتاسپید باید یک سرور با هشت هسته و ۱۶ گیگابایت رم برایش تهیه میکردید!
√ این وبسرور به ویژه برای کاربردهایی لازم است که تعداد کاربران همزمان زیاد است اما آن اسکریپت چندان سنگین نیست. (یعنی نیازِ اصلی شما، پشتیبانی از اتصالات همزمان است)
آپدیت: این وبسرور جدیداً یک نسخه رایگان نیز با نام OpenLiteSpeed ارائه کرده است که ما در چند مورد که تجربه کردیم، بسیار موفق و حتی بسیار بهتر از NginX عمل کرد و در مجموع بسیاری از هاستینگها برای هاستهای پربازدید خود از همین وبسرور استفاده میکنند. پیشنهاد اول ما استفاده از این وبسرور است.
۳.۱- وبسرور Nginx: این وبسرور نیز رایگان است اما میتوان آنرا قدرتمندترین وبسرور بازار برای سایتهای با ترافیک بالا دانست. در معرفی این وبسرور در سایت رسمی آن آمده است:
NGINX is the world’s most popular open source web server and load balancer for high traffic sites
بالانسکنندهی لود و عمومیترین وبسرور منبعباز جهان برای سایتهای با ترافیک بالا
اگر شما یک سرور اجاره کردهاید میتوانید با پرداخت هزینهای از هاستینگ خود بخواهید که این وبسرور را برای شما نصب کند.
√ این وبسرور به ویژه برای کاربردهایی لازم است که تعداد کاربران همزمان زیاد است و اسکریپت شما نیز اسکریپت سنگینی است.
آپدیت: یکی از مشکلات بزرگ این وبسرور این است که در ترافیکهای بالا دائماً پیغام خطای Gateway 502 را نمایش میدهد و کاربران مجبورند صفحه را دائم رفرش کنند تا شاید صفحه لود شود.
این وبسرور از آن وبسرورهایی است که «مسأله ۱۰هزار اتصال همزمان» که در اصطلاح علمی به آن C10k Problem گفته میشود را حل کرده. (اگر شما این حدود کانکشن روی سرور خواهید داشت، در مورد این مسأله بیشتر مطالعه کنید: فارسی / انگلیسی)
یک تست کارایی بین وبسرورهای مطرحتر در این صفحه و این صفحه آمده است. همانطور که مشخص است، Apache کمترین کارایی و NginX بیشترین کارایی را دارد:
در یک تست، ۲۵ هزار تقاضای لود یک عکس ۵ کیلوبایتی در یک ثانیه به وبسرور ارسال شده. به محور Concurrent Connections (اتصالات همزمان) دقت کنید که هر چه اتصالات همزمان بیشتر میشود، هر وبسرور چقدر RAM اشغال میکند و چند تقاضا را میتواند پاسخ دهد.
میزان RAM اشغال شده توسط هر وبسرور:
تعداد تقاضای پاسخداده شده در یک ثانیه توسط وبسرورها:
۲- اسکریپت نیست که مشخصات هاست را مشخص میکند، بلکه کاربران اسکریپت هستند که نیازمندیها را مشخص میکنند
یک سوء تفاهم که بین برخی مشتریان وجود دارد این است که فکر میکنند اسکریپت است که به هاست خاصی نیاز دارد! در حالی که باید دقت کنید که اکثر اسکریپتهای نوشته شده به زبان PHP تقریباً در یک سطح هستند و برای اجرا به مشخصات پیچیدهای نیاز ندارند. تستا نیز یک اسکریپت متوسط به حساب میآید و نیازی به نرمافزار یا سختافزار ویژهای ندارد. اما چیزی که مهم است، نوع استفاده شما از اسکریپت است.
در حقیقت میتوان گفت مهمترین ملاک در انتخاب هاست و سرور، «تعداد کاربران آنلاین همزمان» است.
اگر شما بتوانید به این موضوع پاسخ دهید، تقریباً میتوان گفت چه هاست و سروری نیاز خواهید داشت.
با توجه به اینکه تستا یک سیستم برگزاری آزمون آنلاین است، از این لحاظ با بسیاری از اسکریپتهای دیگر متفاوت است؛ چرا که معمولاً قرار است چندین کاربر به طور همزمان آنلاین باشند و در یک آزمون شرکت کنند. کمتر اسکریپتی یافت میشود که این ویژگی را داشته باشد. مثلاً در سیستم مدیریت آموزش «نُمرا» ممکن است کاربران در طول یک روز، به طور پراکنده آنلاین شوند و از سیستم استفاده کنند اما در تستا معمولاً آزمون به طور همزمان برگزار میشود و این موضوع، کار را خیلی خاص میکند.
۳- یک اصل مهم: همه چیز باید در عمل تست و مشخص شود
دقت کنید که هیچ متخصصی نمیتواند به شما بگوید برای نیاز شما دقیقاً چه مشخصاتی لازم است چرا که تصمیم در این مورد به موارد بسیار زیادی وابسته است. برخی موارد که مؤثر هستند عبارتند از:
- اسکریپت در هر لود صفحه چند مگابایت رم و چند درصد CPU اشغال میکند. (جهت اطلاع: طبق بررسیهای ما تستا در هر صفحه به طور متوسط ۳ مگابایت رم اشغال میکند. یعنی اگر ۱۰۰۰ کاربر همزمان آنلاین شوند شما حدوداً به ۳ گیگابایت رم نیاز خواهید داشت)
- تعداد کاربران آنلاین همزمان چقدر است. (این مقدار باید در مقدار رم مورد نیاز ضرب شود)
- کاربرانی که همزمان آنلاین هستند، چقدر فعالیت خواهند داشت؟ (مثلاً ممکن است یک بازی آنلاین روی سرور نصب باشد و کاربران لحظه به لحظه با سرور در ارتباط باشند در حالی که در اسکریپتی مثل تستا ممکن است یک بار کل سؤالات لود شود و درست است که کاربران همزمان آنلاین هستند اما خیلیها الان در حال خواندن سؤال هستند و تا وقتی روی پاسخ کلیک نکنند پردازشی روی سرور انجام نمیشود...)
- پهنای باند شبکهی سرور چقدر است؟
- اسکریپت از منابع خارج از سرور استفاده میکند یا خیر؟ (تستا و نمرا استفاده نمیکنند. البته اگر در آزمون، فرمول داشته باشید برای نمایش فرمول به کاربر از یک سایت خارجی استفاده میکند که چندان جای نگرانی نیست)
- و دهها عامل دیگر
به هر حال، چیزی که مشخص است این است که متخصص باید با توجه به شرایط اولیه شما یک تخمین اولیه بزند و سپس یک بار اسکریپت به طور آزمایشی در شرایط شبیه به واقعیت قرار گیرد (یعنی مثلاً شما حتماً باید قبل از آزمون اصلی و مهمی که میخواهید با تستا برگزار کنید، یک آزمون آزمایشی با همان تعداد کاربر برگزار کنید؛ مثلاً از کاربران دعوت کنید در یک نظرسنجی یا یک آزمون ترغیبکنندهی رایگان شرکت کنند) و سپس متخصص در حین اجرای آزمایش، سرور را مانیتور کند (زیر نظر بگیرد) و اگر سرور کم آورد، در صورت امکان در همان لحظه به منابع بیافزاید (در سرورهای Hybrid که این روزها در حال عمومی شدن است، هاستینگ به راحتی میتواند میزان رم و سی.پی.یو را در همان لحظه افزایش دهد) یا بعد از آزمون، منابع را ارتقا دهد و سپس دوباره آزمایش انجام شود تا نهایتاً سرور به یک حالت ایدهآل برسد.
۴- هاست معمولی؟ یا هاست پربازدید؟ یا سرور مجازی؟ یا سرور اختصاصی؟
همانطور که میدانید، مفهوم «هاست» تفاسیر زیادی دارد که توضیح و کاربرد هر یک را بیان میکنیم:
- هاست اشتراکی معمولی (یا Shared Host) [رنگ آبی در شکل بالا]: این نوع هاست ارزانترین هاست بوده و برای سادهترین کاربردها تعبیه شده است. دقت کنید که معمولاً بر روی این نوع هاستها بیشتر از ۳۰ تا ۵۰ کاربر نمیتوانند به طور همزمان آنلاین باشند. (اگر بیشتر شوند، سایت برای همه با مشکلات و خطاهایی مانند 500 internal server و امثالهم باز میشود.
√ پس: اگر شما از اسکریپت خود (مثلاً تستا) طوری استفاده میکنید که کاربران در یک روز ممکن است در ساعات مختلف وارد آزمون شوند و حدس میزنید که در یک لحظه ۳۰ کاربر بیشتر آنلاین نیستند، این نوع هاست مناسبترین گزینه است، اما اگر آزمونهای همزمان برگزار میکنید، احتمالاً این هاست پاسخگو نخواهد بود. اکثر مشتریان حقیقی تستا و نمرا (مثلاً مدرسینی که نسخههای تک-مدرس تستا و نمرا را تهیه کردهاند و آزمونهای تقویتی برای دانشجویان خود برگزار میکنند) از هاستینگ آفتابگردان همین نوع هاست را تهیه میکنند و بدون مشکل پیش رفتهاند.
- هاست اشتراکی پربازدید: این نوع هاست که فقط برخی هاستینگها ارائه میکنند، در حقیقت همان هاست اشتراکی است با این تفاوت که سایتهای کمتری را روی یک سرور قرار میدهند (و البته هزینه سرور بین همان چند سایت سرشکن میشود و هزینه طبیعتاً نسبت به هاست اشتراکی معمولی بیشتر خواهد بود) و همینطور تمهیداتی مثل نصب Nginx و... را در نظر میگیرند و در نتیجه هر سایت میتواند از منابع بیشتر و بهتری استفاده کند.
√ این نوع هاستها نسبت به هزینهای که میدهید ممکن است بتوانند تا ۵۰۰ یا حتی ۱۰۰۰ کاربر همزمان را پشتیبانی کنند. اگر بتوانید از این نوع هاست از یک هاستینگ قابل اعتماد تهیه کنید، دیگر نیازی به درگیری با مدیریت سرور (که ممکن است بسیار کار پردردسر و تخصصی و پرهزینهای باشد) ندارید و با یک هزینه معقول، کار خود را انجام دادهاید. (ما برای اکثر مشتریان تستا که کمتر از ۵۰۰ کاربر آنلاین همزمان دارند این نوع هاست را تهیه کردهایم و مشکلی در برگزاری آزمون نداشتهاند)
- سرور مجازی (VPS = Vistual Private Server) [رنگ نارنجی در شکل بالا]: سرور مجازی یعنی چندین سیستم عامل بر روی یک سختافزار نصب شود و هر سیستم عامل به یکی از مشتریان اجاره داده شود. در مجموع ما به هیچ وجه سرور مجازی را برای کارهای سنگین پیشنهاد نمیکنیم. سرور مجازی برای کاربردهای خاص و سادهای (به طور مثال راهاندازی یک سرور VPN و یا حتی در حد تست) مناسب است. ما تجربه خوبی از سرور مجازی نداریم. (این را خودتان نیز میتوانید با ایجاد چند سرور مجازی روی سیستم خودتان درک کنید... درست است که مثلاً ۲ گیگابایت رم در اختیار شما قرار میگیرد اما چون همه منابع بین همه سیستم عاملها مشترک هستند و همه این هماهنگیها به عهده سیستم عامل و نرمافزار میزبان است، معمولاً عواملی مانند ناهماهنگی بین سیستم عامل میزبان و نرمافزار مجازیسازی و خیلی عوامل دیگر باعث میشود عملاً شما لذتی از یک سرور مجازی نبرید)
- سرور اختصاصی (Dedicated Server) [رنگ سبز در شکل بالا]: اجاره یا خرید سرور اختصاصی و از آن مهمتر، مدیریت آن، نیاز به تجربه و تخصص بالایی دارد. ما مشتریانی با ادعاهای بسیار بالا داشتهایم که چون تخصص آنها مدیریت سرور نیست، حتی نام وبسرورهایی مثل Nginx و LiteSpeed را نشنیدهاند و همینها باعث میشود یک کانفیگ ناشیانه برای سرور انجام دهند و طبیعتاً سرور در ترافیک بالا کرش کند و عجیب اینکه آنها با آن همه تخصص، مشکل را از طرف نرمافزار تستا بدانند اما با چند راهنمایی و آشنا کردن آنها با این وبسرورها و... متوجه میشوند که پیکربندی سرورها نیاز به تخصص داشته است...
به هر حال، اینکه شما به چه مشخصاتی برای سرور خود نیاز دارید، همچنان معتقدیم باید در عمل مشخص شود اما به طور مثال، در یکی از تجربههای ما یک مشتری، با حدود ۱۵۰۰ کاربر که به طور همزمان از سراسر کشور وارد سامانه برگزاری آزمون آنلاین تستا میشدند، چنین سروری کافی بود:
- ۸ هسته CPU
- ۱۶ گیگابایت RAM
- هر چند هارد مهم نیست اما به هر حال، 250 گیگابایت هارد
- به انضمام نصب LiteSpeed
البته این مشتری برای محکمکاری و به خاطر حساسیت آزمون، این مشخصات را انتخاب کردند و البته هزینه ماهانه حدود ۷۰۰ هزار تومان نیز برای آن پرداخت میکنند، اما ما فکر میکنیم ۴ هسته CPU و ۸ گیگابایت رم نیز برای ۱۵۰۰ نفر کافی است.
مشتری دیگری با حدود ۴۰۰۰ هزار کاربر که البته طی چند روز به طور پراکنده وارد آزمون میشدند (و ممکن هم بود که در یک لحظه ۱۰۰ تا ۳۰۰ نفر وارد شوند) یک سرور اختصاصی با دو هسته و دو گیگابایت رم اجاره کردند و بدون مشکل طی دو ماه آزمونهای خود را برگزار کردند. (هزینه تقریبی برای این سرور: ماهانه ۳۰۰ هزار تومان)
- سرور ترکیبی یا هیبریدی (Hybrid Server) [رنگ خاکستری در شکل بالا]: این نوع سرورها که در حال عمومی شدن هستند و به مرور جایگزین سرور اختصاصی میشوند، در حقیقت ترکیبی از سرور مجازی و سرور اختصاصی هستند. یعنی مزیت سرور مجازی که ارتقای سریع منابع است را همراه با مستقل بودن منابع در حالت سرور اختصاصی با هم دارند. این سرور به خصوص چون به راحتی و به سرعت قابل ارتقا است، بهترین گزینه نسبت به سرور اختصاصی است و ما خودمان برای مشتریانمان از همین نوع سرور به کار میگیریم. در کل، توضیحات، همان توضیحات مربوط به سرور اختصاصی است...
اینها تجربیات و پیشنهادات ما برای هاست مورد نیاز برای تستا (یا اسکریپتهای مشابه مانند وردپرس و جوملا و نمرا و ...) بود. اگر ابهام یا نکته خاصی دارید میتوانید در بخش نظرات مطرح نمایید.
موفق باشید؛
حمید رضا نیرومند
ـــــــــــــــــــــــــ
آدرس کوتاه این مطلب: http://yourl.ir/server