یکی از متداولترین پرسشهایی که برنامهنویسان هنگام استفاده از Blazor Server مطرح میکنند، این است که برای پروژهای با تعداد کاربران بالا به چه میزان منابع سروری نیاز داریم و چگونه آن را محاسبه کنیم. در این مقاله به زبان ساده و کاربردی به این موضوع میپردازیم.
Blazor Server چگونه کار میکند؟
Blazor Server برای هر کاربر فعال، یک ارتباط زنده به نام Circuit با سرور برقرار میکند. هر Circuit اطلاعات مربوط به وضعیت رابط کاربری (UI State) را در حافظه سرور ذخیره میکند. این یعنی هر کاربر همزمان مقداری از حافظه سرور (RAM) را اشغال میکند.
حافظه سرور چقدر مهم است؟
طبق مستندات رسمی مایکروسافت، هر Circuit برای اپلیکیشن بسیار ساده مثل یک برنامهی «Hello World»، حدود ۲۵۰ کیلوبایت از حافظه سرور را مصرف میکند.
البته این عدد در برنامههای واقعی و پیچیدهتر، بیشتر خواهد بود. بنابراین همیشه بهتر است مصرف منابع را در حین توسعهی برنامهی واقعی اندازهگیری کنید.
مثال عملی برای محاسبه منابع مورد نیاز
فرض کنید شما یک وبسایت خبری دارید که روزانه حدود ۵ میلیون بازدید دارد. طبق آمار، حدود ۸۰ درصد این بازدیدها بین ساعت ۸ صبح تا ۱۲ شب رخ میدهد، یعنی در طول ۱۶ ساعت.

1️⃣قدم اول: محاسبه تعداد کاربران همزمان
ابتدا بازدیدهای همزمان احتمالی را تخمین میزنیم:
تعداد بازدید در بازهی ۱۶ ساعته: ۴,۰۰۰,۰۰۰ بازدید (۸۰٪ از ۵ میلیون)
بازدید در هر ساعت: ۲۵۰,۰۰۰ (۴,۰۰۰,۰۰۰ تقسیم بر ۱۶)
بازدید در هر دقیقه: ~۴۱۶۶ (۲۵۰,۰۰۰ تقسیم بر ۶۰)
اگر میانگین مدت زمان حضور هر بازدیدکننده حدود ۳ دقیقه باشد، همزمان حدود ۱۲,۵۰۰ کاربر فعال خواهید داشت.
پس عدد ۱۲,۵۰۰ کاربر همزمان را در نظر میگیریم.
2️⃣قدم دوم: محاسبه حافظه سرور (RAM)
طبق مستندات:
برای برنامه ساده: ۲۵۰ کیلوبایت حافظه برای هر Circuit (کاربر)
برای برنامه پیچیدهتر معمولاً ۲ تا ۳ برابر این عدد فرض کنید. مثلاً فرض کنیم ۵۰۰ کیلوبایت برای هر کاربر لازم است.
حالا حافظه مورد نیاز:
۱۲,۵۰۰ × ۵۰۰ کیلوبایت = ۶,۲۵۰,۰۰۰ کیلوبایت ≈ ۶ گیگابایت حافظه RAM
برای احتیاط، بهتر است ۲۰٪ حافظه اضافی در نظر بگیرید که مجموعاً حدود ۷ تا ۸ گیگابایت حافظه RAM مورد نیاز خواهد بود.
3️⃣قدم سوم: محاسبه منابع CPU
حافظه مهمترین عامل محدودکننده در Blazor Server است، اما CPU نیز مهم است. برای سنجش نیاز به CPU بهتر است از ابزارهایی مانند:
پیادهسازی تست بار (Load Test): با استفاده از ابزارهایی مثل Apache JMeter یا ابزارهای تست بار ابری مثل K6 میتوانید تعداد کاربران زیادی را شبیهسازی کرده و بار روی CPU را اندازه بگیرید.
استفاده از ابزارهای مانیتورینگ منابع مثل Application Insights، NewRelic یا ابزارهای داخلی خود ویندوز مثل Performance Monitor.
آیا Blazor Server محدودیتی در تعداد کاربران همزمان دارد؟
شاید این سؤال برای شما هم پیش آمده باشد: آیا Blazor Server میتواند هزاران یا حتی میلیونها کاربر را پشتیبانی کند؟ پاسخ این است: Blazor Server محدودیت ذاتی در تعداد کاربران ندارد، اما منابع سختافزاری سرور شما، مخصوصاً حافظه (RAM)، محدودیتهایی ایجاد میکند.

چرا محدودیت ایجاد میشود؟
Blazor Server برای هر کاربر یک circuit ایجاد میکند که در حافظه سرور نگهداری میشود. پس اگر حافظه پر شود، دیگر نمیتوانید کاربران جدید را پشتیبانی کنید.
چه زمانی به سقف میرسیم؟
اجازه دهید عددی تقریبی به شما بدهیم:
اگر برای هر کاربر به طور میانگین ۵۰۰ کیلوبایت حافظه در نظر بگیریم (برنامهی نیمهپیچیده)
و شما سروری با ۱۶ گیگابایت RAM قابل استفاده برای Blazor داشته باشید
آنگاه:
۱۶ × ۱۰۲۴ مگابایت = ۱۶,۳۸۴ مگابایت = ۱۶,۷۷۲,۲۱۶ کیلوبایت
۱۶,۷۷۲,۲۱۶ / ۵۰۰ ≈ ۳۳,۵۴۴ کاربر همزمان
تعداد بازدید روزانه چقدر میشود؟
اگر کاربران شما به طور میانگین ۳ دقیقه در سایت بمانند:
هر ساعت میتوانید ۲۰ برابر تعداد کاربران همزمان را پشتیبانی کنید (۶۰ / ۳ = ۲۰)
یعنی ۳۳,۵۴۴ × ۲۰ = ۶۷۰,۸۸۰ بازدید در هر ساعت
در طول ۱۶ ساعت شلوغ روزانه: ۶۷۰,۸۸۰ × ۱۶ = ۱۰,۷۳۴,۰۸۰ بازدید روزانه
یعنی فقط با یک سرور ۱۶ گیگابایتی خوب، میتوانید بالای ۱۰ میلیون بازدید روزانه را پشتیبانی کنید!
اما اگر بازدیدها بیش از این باشد یا زمان ماندگاری کاربران بیشتر شود، لازم است سرور را قویتر کرده یا سرورها را گسترش دهید (scale out).
جمعبندی نهایی
Blazor Server محدودیتی در تعداد کاربران ندارد؛ اما هر کاربر منابعی را اشغال میکند که مهمترین آن حافظه سرور است. محاسبه دقیق و تست بار، بهترین راه برای تعیین منابع مورد نیاز است.
با رعایت اصول مطرح شده و انجام محاسبات ساده بالا، میتوانید سروری متناسب با نیاز واقعی پروژهی خود فراهم کنید و از نگرانیهای آتی در زمینه مقیاسپذیری اپلیکیشنهای Blazor Server جلوگیری کنید.
برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربریتان شوید