وقتی تعداد کاربران بالا میرود — مثلاً شروع همزمان امتحانات — یک مودل تنظیمنشده کند میشود یا از دست میرود. خبر خوب این است که مودل بهخوبی مقیاسپذیر است، اگر درست پیکربندی شود.
گلوگاه کجاست؟
قبل از تغییر، اندازه بگیرید. ابزار «Performance overview» مودل، لاگ کند پایگاهداده و مانیتورینگ سرور (پردازنده، رم، I/O) نشان میدهند فشار روی کدام بخش است. معمولاً ترتیب گلوگاهها این است: نبود کش، سپس پایگاهداده، سپس PHP، و در نهایت پهنای باند.
کش: مؤثرترین قدم
بهصورت پیشفرض مودل کش را روی دیسک نگه میدارد که کند است. یک سرور Redis (یا Memcached) راه بیندازید و در مودل، کش «Application» و «Session» را به آن منتقل کنید. همین یک تغییر اغلب بیشترین بهبود را میدهد. کش OPcache در PHP هم باید فعال و با حافظهی کافی باشد.
پایگاهداده
- از نسخهی بهروز MySQL/MariaDB یا PostgreSQL استفاده کنید.
- پارامترهای حافظه (مثل
innodb_buffer_pool_size) را متناسب با رم سرور تنظیم کنید. - برای بار خیلی بالا، پایگاهداده را روی سرور جداگانه ببرید و در صورت نیاز، نسخهی خواندنی (read replica) اضافه کنید.
وبسرور و PHP
PHP-FPM با تعداد پردازهی متناسب با رم، Nginx یا Apache تنظیمشده، فشردهسازی و کش مرورگر برای فایلهای ثابت، و HTTP/2. برای دسترسپذیری بالا میتوان چند وبسرور را پشت یک متعادلکنندهی بار قرار داد که کش و نشست مشترک (Redis) این کار را ممکن میکند.
کرون و کارهای پسزمینه
کرون مودل باید هر یک دقیقه اجرا شود. برای سایت شلوغ، اجرای کرون را موازی کنید و کارهای سنگین (ارسال ایمیل انبوه، نمایهسازی جستوجو) را به صف بسپارید تا درخواست کاربر را کند نکنند.
بیگبلوباتن را جدا کنید
هرگز بیگبلوباتن را روی همان سرور مودل نصب نکنید؛ کلاس زنده پردازنده و پهنای باند را میبلعد و کل سایت را کند میکند. آن را روی سرور اختصاصی جدا بگذارید و برای بار بالا از معماری چندسروری استفاده کنید. جزئیات در این مقاله.
برای بازبینی کارایی و آمادهسازی مودل مدرسهتان برای فصل امتحانات، درخواست مشاوره ثبت کنید.