1. مستندات
  2. سرور اختصاصی
  3. تست فشار و شبیه‌سازی ترافیک واقعی برای آماده‌سازی سرور اختصاصی سایت‌های پرترافیک

تست فشار و شبیه‌سازی ترافیک واقعی برای آماده‌سازی سرور اختصاصی سایت‌های پرترافیک

Calendar

انتشار:

1404/11/29
Update Calendar

به روز رسانی:

1404/11/29

در این مقاله قرار است به‌صورت عملی و مرحله‌به‌مرحله یاد بگیرید چگونه تست فشار و شبیه‌سازی ترافیک واقعی را روی سرور اختصاصی انجام دهید و هم‌زمان منابع سرور را مانیتور کنید. هدف این آموزش این است که قبل از بروز مشکل در زمان ترافیک بالا نقاط ضعف سرور شناسایی و برطرف شوند.

مرحله اول: مشخص‌کردن نوع سایت ونقاط بحرانی

در اولین قدم مدیر سرور باید بداند تست فشار قرار است کدام بخش سرور را بررسی کند. نوع سایت مستقیماً مشخص می‌کند فشار اصلی روی چه بخشی ایجاد می‌شود. برای مثال در سایت‌های وردپرسی خبری که بیشتر محتوای متنی و صفحات ثابت دارند فشار اصلی معمولاً روی وب‌سرور و سیستم کش وارد می‌شود چون تعداد زیادی کاربر فقط صفحات را باز می‌کنند. در فروشگاه‌های اینترنتی مبتنی بر وردپرس و ووکامرس یا سایت‌های اختصاصی فروش فشار بیشتر روی PHP و دیتابیس ایجاد می‌شود چون هر کاربر عملیات جستجو افزودن به سبد خرید ثبت سفارش و پرداخت انجام می‌دهد. در سایت‌های پنل‌محور یا داشبوردی فشار هم‌زمان روی CPU، رم و دیتابیس دیده می‌شود چون هر درخواست شامل پردازش منطقی و کوئری دیتابیس است. قبل از هر تست باید مشخص شود هدف بررسی تحمل فشار روی وب‌سرور است یا PHP یا دیتابیس یا دیسک تا نتایج تست قابل تحلیل باشد.

مرحله دوم: آماده‌سازی سیستم جداگانه برای اجرای تست فشار

تست فشار نباید روی خود سرور اصلی اجرا شود چون باعث خطای نتایج و فشار دوطرفه می‌شود. یک سیستم جداگانه لینوکسی برای ارسال درخواست‌ها لازم است. این سیستم می‌تواند یک سرور مجازی یا یک سیستم لینوکس ساده باشد. هدف این است که تعداد زیادی درخواست هم‌زمان از بیرون به سمت سرور ارسال شود تا شرایط واقعی کاربران شبیه‌سازی شود. اگر تست روی خود سرور انجام شود مصرف CPU و رم توسط ابزار تست نتایج را غیرواقعی می‌کند.

مرحله سوم: نصب ابزارهای تست فشار روی سیستم لینوکسی

پس از آماده‌سازی سیستم تست باید ابزارهای مناسب نصب شوند. ابتدا مخازن لینوکس به‌روزرسانی می‌شوند تا بسته‌ها بدون خطا نصب شوند. سپس ابزارهایی نصب می‌شوند که بتوانند درخواست‌های زیاد و هم‌زمان ارسال کنند. Apache Benchmark برای تست عددی و سریع مناسب است اما رفتار واقعی کاربران را شبیه‌سازی نمی‌کند. ابزار Siege پیشرفته‌تر است و می‌تواند چند صفحه مختلف را با الگوی تصادفی باز کند که فشار واقعی‌تری روی PHP و دیتابیس ایجاد می‌کند.

apt update
apt install apache2-utils siege -y

در این مرحله باید مطمئن شوید ابزارها بدون خطا نصب شده‌اند و سیستم تست از نظر شبکه به سرور دسترسی کامل دارد.

نصب ابزارهای تست فشار در ترمینال

مرحله چهارم: اجرای تست فشار پایه برای سنجش توان کلی سرور

در این مرحله یک تست ساده اجرا می‌شود تا ظرفیت اولیه سرور مشخص شود. Apache Benchmark تعداد مشخصی درخواست را با تعداد کاربران هم‌زمان ارسال می‌کند. این تست بیشتر برای بررسی توان وب‌سرور و پاسخ اولیه مناسب است. دستور زیر نمونه‌ای از تست پایه است.

ab -n 10000 -c 200 https://example.com/

در این تست 200 کاربر هم‌زمان در مجموع 10000 درخواست ارسال می‌کنند. اگر زمان پاسخ زیاد شود یا خطای timeout یا 500 مشاهده شود یعنی سرور در این سطح فشار نیاز به بهینه‌سازی دارد. این تست معمولاً فشار اصلی را روی وب‌سرور و اتصال‌های هم‌زمان ایجاد می‌کند.

خروجی تست Apache Benchmark

مرحله پنجم: شبیه‌سازی ترافیک واقعی کاربران

برای نزدیک شدن به رفتار واقعی کاربران باید صفحات مختلف سایت هدف تست قرار بگیرند. کاربران واقعی فقط صفحه اصلی را باز نمی‌کنند بلکه وارد دسته‌بندی‌ها، جستجو و صفحات داخلی می‌شوند. در این مرحله یک فایل شامل آدرس صفحات پرترافیک ساخته می‌شود. این فایل می‌تواند شامل صفحه اصلی، صفحات دسته‌بندی، صفحه جستجو و صفحات محصول باشد.

nano urls.txt

پس از ذخیره فایل تست Siege اجرا می‌شود.

siege -c 150 -t 10M -f urls.txt

در این تست 150 کاربر هم‌زمان به‌مدت 10 دقیقه رفتار واقعی کاربران را شبیه‌سازی می‌کنند. این مرحله فشار اصلی را روی PHP و دیتابیس وارد می‌کند و برای سایت‌های داینامیک بسیار مهم است.

اجرای Siege با شبیه‌سازی ترافیک واقعی

مرحله ششم: مانیتورینگ هم‌زمان منابع سرور در حین تست

هم‌زمان با اجرای تست مدیر سرور باید وارد سرور اصلی شود و منابع را بررسی کند. ابزار top اولین ابزار پایه برای مشاهده مصرف CPU رم و بار کلی سیستم است. اگر load average به‌صورت مداوم بالا بماند نشان‌دهنده فشار بیش‌ازحد است.

top

در این مرحله باید توجه شود کدام پردازش بیشترین مصرف را دارد. اگر php-fpm بیشترین مصرف را دارد تنظیمات PHP باید بررسی شود. اگر mysqld مصرف بالا دارد دیتابیس تحت فشار است.

نمای خروجی top

مرحله هفتم: مانیتورینگ دقیق‌تر CPU و رم

برای بررسی دقیق‌تر از htop استفاده می‌شود. این ابزار نمایش گرافیکی هسته‌های CPU، مصرف رم و تعداد پردازش‌ها را ساده‌تر می‌کند. نصب و اجرای آن به‌صورت زیر است:

apt install htop -y
htop

در این مرحله می‌توان دید آیا فشار روی یک هسته خاص است یا همه هسته‌ها درگیر شده‌اند. این موضوع در تصمیم‌گیری برای افزایش منابع یا بهینه‌سازی تنظیمات بسیار مهم است.

htop

مرحله هشتم: بررسی فشار دیسک و دیتابیس

در سایت‌هایی که لاگ زیاد تولید می‌شود یا دیتابیس سنگین دارند دیسک می‌تواند گلوگاه اصلی باشد. ابزار iotop مصرف دیسک را نشان می‌دهد.

apt install iotop -y
iotop

برای دیتابیس نیز تعداد اتصال‌های هم‌زمان بررسی می‌شود.

mysql -e "SHOW STATUS LIKE 'Threads_connected';"

اگر تعداد اتصال‌ها بالا باشد باید تنظیمات اتصال دیتابیس یا کش بررسی شود.

مانیتورینگ دیسک و دیتابیس

مرحله نهم: تحلیل نتایج و تکرار تست

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

مرحله دهم: مانیتورینگ مداوم پس از تست

پس از رسیدن به تنظیمات مناسب مانیتورینگ دائمی منابع ضروری است. بررسی مصرف CPU، رم، دیسک و دیتابیس در ساعات اوج ترافیک کمک می‌کند مشکلات قبل از قطعی شناسایی شوند. مانیتورینگ مداوم پایه اصلی پایداری سرورهای پرترافیک است.


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

آیا توانستیم چالش شما را حل کنیم؟