بلاگ/چطور سرور مجازی مناسب استریم و پخش زنده ویدیو را انتخاب کنیم؟
به‌روز شده

چطور سرور مجازی مناسب استریم و پخش زنده ویدیو را انتخاب کنیم؟

1405/08/140 بازدید
چطور سرور مجازی مناسب استریم و پخش زنده ویدیو را انتخاب کنیم؟

چطور سرور مجازی مناسب استریم و پخش زنده ویدیو را انتخاب کنیم؟

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

سرور مجازی در پخش زنده دقیقا چه کاری انجام می‌دهد؟

نرم‌افزار انکودر — معمولا OBS Studio یا ffmpeg — تصویر را کدگذاری می‌کند و از طریق پروتکل RTMP یا SRT به سرور می‌فرستد. از آن‌جا دو مسیر وجود دارد: سرور همان جریان را بدون تغییر به پلتفرم‌های دیگر (یوتیوب، اینستاگرام، آپارات) رله می‌کند، یا خودش جریان را در چند کیفیت ترانسکود می‌کند و از طریق HLS برای بینندگان پخش می‌کند. این دو حالت بار کاملا متفاوتی روی منابع سرور می‌گذارند و اولین چیزی است که باید قبل از خرید پلن روشن کنید.

CPU: رله ساده یا ترانسکود چند کیفیته؟

نمودار مصرف CPU سرور در رله ساده در مقابل ترانسکود چند کیفیته برای پخش زنده

رله کردن یک جریان ورودی، بدون باز و بسته کردن فایل ویدیو، سبک است؛ سرور فقط بسته‌های شبکه را دریافت و دوباره ارسال می‌کند. اما وقتی سرور باید همان ویدیو را در چند کیفیت (مثلا 1080p، 720p و 480p) خروجی بدهد، باید هر فریم را دوباره انکود کند و این کار CPU زیادی می‌خواهد.

یک قاعدهٔ عملی: هر خروجی اضافه با ترانسکود نرم‌افزاری (x264) حدود یک هسته کامل پردازنده را مصرف می‌کند، در کیفیت متوسط. یعنی برای یک ladder سه‌کیفیته، چیزی حدود ۳ تا ۴ هسته باید رزرو کنید، نه یک هسته با فرکانس بالا.

  • فقط رله (بدون ترانسکود): یک پلن با ۲ هسته و ۴ گیگابایت رم معمولا کافی است؛ CPU بیشتر صرف شبکه و بافر می‌شود تا کدگذاری.
  • ترانسکود یک یا دو کیفیت اضافه: به ۴ هسته و حداقل ۸ گیگابایت رم نیاز دارید تا ترانسکود و بافر هم‌زمان جا شوند.
  • ترانسکود چند کیفیته برای مخاطب زیاد یا چند استریم هم‌زمان: از ۸ هسته به بالا، به‌خصوص اگر چند کانال را روی یک سرور مدیریت می‌کنید.

اگر مطمئن نیستید سرورتان کجای این طیف می‌ایستد، یک پخش آزمایشی ۱۵ دقیقه‌ای با همان تنظیمات واقعی بگیرید و مصرف CPU را با htop یا top نگاه کنید؛ عددی بالای ۸۰ درصد به‌طور پیوسته یعنی پلن کوچک است.

رم چقدر لازم است؟

رم در پخش زنده بیشتر صرف بافر شبکه، نگه‌داری سگمنت‌های HLS برای چند ثانیه و اجرای همزمان چند پردازه ffmpeg می‌شود، نه خود ترانسکود. برای یک سرور رله با چند بیننده همزمان، ۲ تا ۴ گیگابایت رم کافی است. وقتی ترانسکود چند کیفیته وارد می‌شود یا هزاران بیننده همزمان دارید، رم باید با تعداد پردازه و طول بافر HLS بالا برود — معمولا ۸ گیگابایت به بالا برای کار جدی.

نکتهٔ کاربردی: اگر سرور همزمان ضبط هم می‌کند (ذخیرهٔ فایل خام کنار پخش)، حداقل ۲ گیگابایت رم اضافه برای عملیات دیسک در نظر بگیرید، وگرنه نوشتن فایل با ترافیک شبکه رقابت می‌کند و همان‌جا است که فریم‌ریزی شروع می‌شود.

محاسبه پهنای باند پخش زنده

پهنای باند خروجی تقریبا این‌طور حساب می‌شود:

بیت‌ریت استریم × تعداد بیننده همزمان=پهنای باند لازم

برای مثال، یک پخش 1080p با بیت‌ریت ۵ مگابیت بر ثانیه و ۲۰۰ بیننده همزمان به حدود ۱ گیگابیت بر ثانیه پهنای باند خروجی نیاز دارد — رقمی که خیلی از پلن‌های ورودی VPS را به‌راحتی اشباع می‌کند.

سناریوی پخشبیت‌ریت هر استریمبیننده همزمانپهنای باند خروجی تقریبی
وبینار یا پخش کوچک، ۷۲۰p۲.۵ مگابیت/ثانیه۵۰ نفرحدود ۱۲۵ مگابیت/ثانیه
پخش عمومی ۱۰۸۰p۵ مگابیت/ثانیه۲۰۰ نفرحدود ۱ گیگابیت/ثانیه
پخش چندکیفیته (ladder)میانگین ۳ مگابیت/ثانیه در هر کیفیت۱۰۰۰ نفرچند گیگابیت/ثانیه

برای سناریوی سوم معمولا یک CDN بین سرور مبدا و بیننده‌ها قرار می‌گیرد تا ترافیک واقعی را توزیع کند؛ سرور مجازی فقط نقطهٔ ورودی (origin) می‌ماند، نه کل مسیر پخش.

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

لوکیشن سرور و تاخیر پخش

لوکیشن سرور روی تاخیر (latency) بین انکودر شما و سرور، و بین سرور و بیننده‌ها اثر می‌گذارد. اگر بیننده‌های اصلی‌تان در اروپا یا خاورمیانه هستند، سروری نزدیک‌تر به آن‌ها جریان را سریع‌تر و با افت کمتر می‌رساند. برای تست واقعی، همان مسیری که انکودرتان تا سرور طی می‌کند را با ping و یک تست پخش کوتاه بسنجید، نه فقط عدد تئوری فاصلهٔ جغرافیایی.

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

ذخیره‌سازی، شبکه و امنیت پخش زنده

کنار CPU و رم، چند مورد دیگر هم روی کیفیت پخش اثر می‌گذارد:

  • دیسک NVMe: اگر سرور همزمان ضبط یا ذخیرهٔ موقت سگمنت‌های HLS را انجام می‌دهد، سرعت دیسک مستقیم روی تاخیر پخش اثر دارد.
  • IPv6 کنار IPv4: برخی پلتفرم‌های پخش و CDNها روی IPv6 بهتر مسیریابی می‌کنند؛ وجود هر دو روی سرور گزینه را باز می‌گذارد.
  • فایروال و کلید SSH: پورت RTMP پیش‌فرض (۱۹۳۵) و پنل مدیریت پخش باید فقط برای IPهای لازم باز باشند، نه برای همه.
  • حفاظت در برابر DDoS: یک پخش زنده محبوب هدف خوبی برای حملات حجمی است؛ وجود محافظت پیش‌فرض روی شبکه، نیاز به تنظیم جدا ندارد.

سرورهای مجازی آریانت روی دیتاسنتر OVH در آلمان این موارد را از ابتدا دارند؛ جزئیات کامل پلن‌ها و قیمت‌ها در صفحهٔ سرور مجازی OVH آلمان موجود است.

چند تست قبل از خرید سرور

به‌جای حدس زدن، این چند مورد را قبل از خرید پلن نهایی چک کنید:

  1. یک پخش آزمایشی با تنظیمات واقعی OBS (بیت‌ریت، رزولوشن، تعداد خروجی) اجرا کنید و مصرف CPU را با top یا htop ببینید.
  2. سرعت واقعی آپلود از محل انکودرتان تا سرور را با یک تست سرعت یا iperf3 بسنجید، نه فقط سرعت تئوری اینترنتتان.
  3. اگر ترانسکود دارید، دستور ffmpeg را یک‌بار دستی روی سرور اجرا کنید و زمان پردازش هر فریم را با نرخ فریم واقعی پخش مقایسه کنید.
  4. مصرف رم را در طول یک پخش کامل، نه فقط چند دقیقهٔ اول، رصد کنید؛ نشت حافظه در پردازه‌های طولانی‌مدت معمولا بعد از چند ساعت خودش را نشان می‌دهد.

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

سؤالات متداول

آیا سرور مجازی برای پخش زنده ۲۴ ساعته (مثل دوربین یا رادیو آنلاین) مناسب است؟ بله، به شرطی که پلن را برای بار پیوسته انتخاب کنید نه برای پیک لحظه‌ای؛ چون این نوع پخش استراحتی برای CPU و شبکه ندارد، رزرو منابع باید از همان ابتدا با حاشیهٔ امن انتخاب شود.

تفاوت رله ساده و ترانسکود در مصرف سرور چقدر است؟ رله فقط جریان را عبور می‌دهد و بار سبکی روی CPU می‌گذارد؛ ترانسکود هر فریم را دوباره کدگذاری می‌کند و به‌ازای هر خروجی اضافه تقریبا یک هسته کامل پردازنده می‌خواهد.

آیا پهنای باند یک سرور مجازی برای چند هزار بیننده همزمان کافی است؟ برای چند صد بیننده روی یک سرور معمولا کافی است، اما برای چند هزار نفر معمولا یک CDN بین سرور و بیننده‌ها لازم می‌شود؛ سرور فقط نقطهٔ ورودی جریان می‌ماند.

چه لوکیشنی برای پخش زنده با مخاطب داخل ایران و منطقه مناسب‌تر است؟ بهترین راه، تست مسیر واقعی با ping و یک پخش کوتاه روی چند لوکیشن فعال است؛ عدد تاخیر واقعی مهم‌تر از فاصلهٔ جغرافیایی روی نقشه است.