এনজিআইএনএক্স বড় এমপি 4 ফাইলগুলি অত্যন্ত দক্ষতার সাথে পরিবেশন করছে


8

আমি বর্তমানে সেন্টোস 6.6 ওএসে এনগিনেক্স / 1.0.15 চালাচ্ছি। সার্ভারের নিম্নলিখিত চশমা রয়েছে:

  • ইন্টেল (আর) এটম (টিএম) সিপিইউ সি 2750 @ 2.40GHz (8 টি কোর)
  • 32 জিবি রাম
  • 5 এক্স 6000 জিবি 7200 আরপিএম (10 রেড)

সমস্যাটি

সার্ভারটির একটি 1 জিবিটি / গুলি সংযোগ রয়েছে, তবে এটি শীর্ষে চলে যায় এবং 400-500 এমবিট / সেকেন্ড পরে বাধা দেয়। পরিষেবাটি প্রায় 100 টি সংযোগে কমে যেতে শুরু করে .. এবং সার্ভারের গতি নাটকীয়ভাবে হ্রাস পাচ্ছে (50% ব্যান্ডউইথ থাকা সত্ত্বেও)

এনজিআইএনএক্স সার্ভার স্ট্যাটিক এমপি 4 ফাইল পরিবেশনার জন্য কঠোরভাবে। প্রতিটি ফাইল সাধারণত 400-1200 এমবি (700 এমবি গড় হয়)

আমি অনেকগুলি কনফিগারেশন চেষ্টা করেছি এবং সেগুলির প্রায় সবগুলিই আমাকে একই ফলাফল দেয় .. আমি অত্যন্ত হতাশ ..

সার্ভার লোডও 0.3 কেটে যায় না।

আমার কনফিগারেশনে কোনও স্পষ্টতই ভুল বা বিপথগামী কিছু আছে কি? কিছু সাহায্য করতে পারে।

কনফিগারেশন

/etc/nginx/nginx.conf

user              nginx;
worker_processes  9;

error_log  /var/log/nginx/error.log;


pid        /var/run/nginx.pid;


events {
    worker_connections  51200;
    use epoll;
 }

worker_rlimit_nofile 600000;

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

#access_log  /var/log/nginx/access.log  main;
access_log off;

aio on;
sendfile        off;
tcp_nopush      off;
tcp_nodelay      on;

#keepalive_timeout  0;
keepalive_timeout  65;

output_buffers 1 3m;
#gzip  on;

include /etc/nginx/conf.d/*.conf;

open_file_cache          max=10000 inactive=5m;
open_file_cache_valid    2m;
open_file_cache_min_uses 1;
open_file_cache_errors   on;

}

/etc/nginx/conf.d/default.conf

server {
    listen       80 default_server sndbuf=32k;
    server_name  _;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    include /etc/nginx/default.d/*.conf;


    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    location /Videos/ {
        root /home;
        gzip off;
        gzip_static off;

        mp4;
        mp4_max_buffer_size   300m;
    }

    location /stats {
        stub_status on;
    }

    error_page  404              /404.html;
    location = /404.html {
        root   /usr/share/nginx/html;
    }


    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

1
এতো পুরনো হওয়ার কোনও নির্দিষ্ট কারণ? স্থিতিশীল সংস্করণ এখন 1.8।
পোজ

@ পোয়েজ আমি আজ সকালে
এনজিঙ্ক্সকে

@ পোয়েজ এছাড়াও আমি আইওটপটি দেখার সময় লক্ষ্য করেছি, বেশিরভাগ ক্ষেত্রে যদি আমার সমস্ত এনজিএনএক্স কর্মী প্রক্রিয়া সাধারণত 1918 কেবি / স রিড পর্যন্ত ফেটে না যায়। এটি কি আমার বাফার সীমা হতে পারে?
কেনেনিস্মোথেক্স

যোগাযোগের তথ্যের জন্য আমার প্রোফাইল দেখুন।
পোজ

@ কেন্নিসমোথেক্স ফাইল প্রবাহের সময় সিস্টেস্ট এবং ইফস্ট্যাট এর আউটপুট ভাগ করে নিন
আনাতোলি

উত্তর:


5

আরও ভাল শুরুটি নিম্নলিখিত নিয়মের সেট হতে পারে:

  1. লগিং এবং સ્વીক_মুটেক্স অক্ষম করুন
  2. সেন্ডফাইল সক্ষম করুন
  3. সেন্ডফাইল_ম্যাক্স_চঙ্ক সেট করুন

কনফিগারেশন:

events {
    accept_mutex off;
}

access_log off;
sendfile on;
sendfile_max_chunk 512k;

নতুন এনগিনেক্স (1.7.11 বা আরও নতুন) বৈশিষ্ট্য থ্রেড পুলটি আপনার ক্ষেত্রে সত্যই সহায়ক হতে পারে:

location / {
    root /home;
    aio threads;
    mp4;
}

পরীক্ষার নমুনাগুলিতে এটি নাটকীয়ভাবে আপনাকে ব্যান্ডউইথকে 1 জিবিপিএস থেকে 9 জিবিপিএস পর্যন্ত বাড়িয়ে তুলতে সহায়তা করে। নয় বার! আপনার কাছে কেবল 1 জিবিপিএস রয়েছে তবে এটি সমস্ত ব্যবহার করে।

আরও বিশদ দেখুন: https://www.nginx.com/blog/thread-pools-boost-performance-9x/


আমি আজ এটি চেষ্টা করেছি এবং দুর্ভাগ্যক্রমে কোনও উন্নতি করেছি .. আমি খেয়াল করেছিলাম যে আমার এনজিএনএক্স কর্মী প্রক্রিয়াগুলি 1918kb / s পড়ার স্পিডে শীর্ষে উঠে গেছে, এই সীমাটি কী হতে পারে কোনও ধারণা?
কেনিসমুথেক্স

@ কেন্নিসমোথক্স এটি কম সম্ভাবনা রয়েছে কারণ আপনি বড় ফাইলগুলিকে দক্ষতার সাথে পরিবেশন করতে কনফিগার করতে প্রায় সব চেষ্টা করেছেন
আনাতোলি

@ কেন্নিস্মোথক্স এটি প্রাচীন, তবে আপনি কি কখনও সমাধান খুঁজে পেয়েছেন? আমি আপনার হোস্টিংকে দোষ দেব যে তারা হয়ত বিক্রয় করছে বলে আপনি 1 জিবিপিএস পৌঁছায় না। আপনি কী পান তা একই কনফিগারেশনের সাথে একটি পৃথক হোস্টিং চেষ্টা করুন।
মাইকেল রজার্স

4

শুরু করার জন্য একটি ভাল প্রথম স্থান হ'ল আসল। এমপি 4 ফাইলগুলির সাথে, যেখানে সাধারণত উন্নতির ক্ষেত্রগুলি থাকে।

সুতরাং এনজিআইএনএক্স বা অ্যাপাচি সুরে হারিয়ে যাওয়ার আগে প্রথমে আপনার .mp4 ফাইল টিউন করুন।

এই পোস্টের জন্য সিনেমাটিক সিনেমা বা টেলিভিশন শোয়ের মতো যেখানে প্রতিটি ফ্রেমের পরিবর্তন প্রয়োজন। অন্য কথায়, "দ্য ক্রডস" এর মতো একটি চলচ্চিত্রকে 1 এফপিএস (ফ্রেম / সেকেন্ড) এর মতো পুনরায় স্থানান্তরিত করার চেষ্টাটি মানকে অপরিবর্তনীয় রাখতে কমিয়ে দেবে।

এবং অ-সিনেমাটেমি আমাদের কোর্সওয়্যারকে ওডেমিতে পোস্ট করা ওয়েবিনারের মতো স্ক্রিন ক্যাপচারগুলি বোঝায়।

প্রথমে ফাইলটির অডিও উপাদান বিবেচনা করুন। অডিও উপাদানটি যদি প্রাথমিকভাবে বলতে থাকে, তবে আপনি যে ভিডিও স্ট্রিমটি অনুলিপি করেছেন সেখানে যে ফাইলটি পুনরুদ্ধার করতে হবে তার জন্য ffmpeg ব্যবহার করুন (কোনও পরিবর্তন নেই) + স্টেরিও স্ট্রিমটিকে মনোতে রূপান্তর করুন। অনেকগুলি এমপি 4 ফাইলের জন্য (সিনেমাবিহীন) চলচ্চিত্রের আকারের প্রায় 1/3 টি ভিডিও + 1/3 টি বাম অডিও চ্যানেল + 1/3 ডান অডিও চ্যানেল। স্টেরিও থেকে মনোতে পরিবর্তন করা ফাইলের আকারকে যথেষ্ট পরিমাণে হ্রাস করতে পারে।

দ্বিতীয়ত, এফডিকে-এএসি ( https://github.com/mstorsjo/fdk-aac ) ব্যবহার করে রেট্রান্সকোড অডিও যা অন্যান্য এ্যাক এনকোডারগুলির তুলনায় অনেক ছোট ফাইল তৈরি করে। Ffmpeg সর্বাধিক আধুনিক সংস্করণ অটোমেগিকালি আজকাল FDK-AAC তৈরি করে। এমনকি ম্যাকপোর্টগুলি এখন এটি তৈরি করে। FDK এর আসল যাদু করার জন্য একবার বিবেচনা করুন, এফডিকে স্টেরিও অডিও কমপ্রেসগুলি মনোর থেকে অনেক ছোট ব্যবহার করার সময় একটি স্টেরিও ট্র্যাক প্রয়োজন requires সুতরাং আপনি যদি এফডিকে ব্যবহার করেন তবে স্টেরিও দিয়ে আটকে থাকুন।

তৃতীয়ত, অডিও হ্রাস বিটরেটের জন্য। অনেক সময় এটি 48k হয়, সুতরাং সাধারণ ব্যবহারে -ar 44100 (ffmpeg) বা স্পোকেন (লো ফাই) এর জন্য 22050 এ নামার কথা বিবেচনা করুন।

চতুর্থত, আপনার ভিডিওর ফ্রেম রেট যতটা সম্ভব কম সেট করুন। সুতরাং আপনি যদি স্ক্রিন ক্যাপচার করছেন তবে একটি ফ্রেম কেবল 10-60 সেকেন্ডের মধ্যে একবার পরিবর্তিত হতে পারে, তাই আপনি -r $ fps ব্যবহার করে ফ্রেম রেট ছাড়তে পারবেন, 30-60 fps থেকে 1-5 fps + গুণমানের অনেক সময় থেকে যায় ফাইল আকার প্লামমেট যখন।

আমি নন-সিনেমাটিক ফাইলগুলি অনেকবার সংকুচিত করি যেখানে প্রতি 1G হ্রাস করে 10-20M হয়।

পঞ্চম, নিশ্চিত করুন যে ফাস্টস্টার্ট মুভ পরমাণুটি আপনার ফাইলগুলির সামনের দিকে রয়েছে, যাতে আপনার ফাইলগুলি ডাউনলোডের পরিবর্তে প্রবাহিত হতে পারে।

আমার ffmpeg fdk পরামিতি ...

-সি: একটি লিবিফডিকে_এ্যাক-প্রোফাইলে: aac_he_v2-afterburner 1 -সাইনালিং স্পষ্টত_ sbr -vbr 5 -ac 2 -ar 44100

আসলে, এখানে একটি সাধারণ সম্পূর্ণ ffmpeg কমান্ড ...

এমপি 4 স্ক্রিপ্টটি ffmpeg এর চারপাশে কেবল একটি মোড়ক যা কোনও অডিও + ভিডিও ট্র্যাকগুলি ইংরেজীতে রয়েছে এমন অনুমান করার মতো কাজ করে (মাল্টিট্র্যাক এভিআই + এমকেভি ফাইলগুলির জন্য) + তারপরে ffmpeg কমান্ডটি তৈরি করে। আগ্রহের বিষয়টি হ'ল আসল আদেশ, যা বছরের পর বছর পরীক্ষাগুলির অবশিষ্টাংশ।

প্রথমে আপনার ফাইলগুলি ffmpeg চরম সংকোচনের মাধ্যমে চালানোর চেষ্টা করুন, তারপরে দেখুন ফাইলের ওজন এত কম / ছোট কিনা, কোনও ওয়েব সার্ভারের টিউনিংয়ের প্রয়োজন নেই।

পরীক্ষার ক্ষেত্রগুলি: -r $ fps + -v: crf + -v: প্রিসেট + -আর বিটরেট

কিছুটা পরীক্ষা-নিরীক্ষা আপনাকে ক্ষুদ্রতম ফাইলের আকার + গ্রহণযোগ্য মানের জন্য সেটিংস দেয়।

এমপি 4 ফাইল রোকু ইউনিটগুলিতে খেলতে পারে তা নিশ্চিত করার জন্য + জিনপটস + ক্লিয়ারিং এসএআর / ডিএআর এর মতো অনেকগুলি অদ্ভুত বিকল্প রয়েছে। এগুলি রাখা ভাল, যদি আপনি প্রতিটি সেটআপ করেন নিজের রোকু চ্যানেল, যা 5,000,000+ পরিবারের কাছে পৌঁছানোর জন্য একটি মুক্ত উপায় way

আমার ffmpeg কমান্ড ...

imac> mp4 --dr - noisy foo.avi

tc: diag = v:! h264: mpeg4, a:! aac: ac3 শিরোনাম = 'ফু (টিসি)' Foo-640x480-veryfast-crf18-max-tc.mp4

সিডি '/ ইউজারস / ডেভিড /ডাউনলোডস / ক্যাস্পার.এ.স্পিরিটেড.বাগিনিং .১৯77.ডিভিড্রিপ.আইএনটার্নাল.এক্সভিডি- বিপিডিকারিয়ার' সুন্দর -১৯ এফএফপিজে -ফ্ল্যাজ + জেনপেটস -i "foo.avi" -ম্যাপ 0: 0 -সি: v libx264 -crf: v 18-preset: v veryrest -tune: v ফিল্ম-লেভেল: v 4.1 -প্রফাইলে: v উচ্চ-বুফসাইজ: v 5000k -vf সেটদার = দার = 0, সেতার = সার = 0 -x264opts রঙিনপ্রিম = বিটি 709 : ট্রান্সফার = বিটি 709: কালারমেট্রিক্স = বিটি 709: ফুলরেঞ্জ = অফ-29 29.97 -মোভফ্লাগস + ফাস্টস্টার্ট -ম্যাপ 0: 1 -সি: একটি লাইবফিডেক_এ্যাক-প্রোফাইলে: একটি এ্যাক_হে_ভি 2 -পরবর্তী বার্নার 1 -সাইনালিং স্পষ্ট_স্রাব -vbr 5 -ac 2 -ar 44100 - মেটাডেটা শিরোনাম = 'ফু (টিসি)' -র থ্রেডস 0 -f এমপি 4-বেঞ্চমার্ক ফু -640x480-veryfast-crf18-max-tc.mp4.tmp এমভি -f ফু -640x480-অতিফাস্ট-crf18-সর্বাধিক- tc.mp4.tmp foo-640x480-veryfast-crf18-MAX-tc.mp4


5
এই উত্তরটি সহায়ক নয় কারণ মূল সমস্যাটি Nginx এর সাথে দক্ষতার সাথে বড় ফাইলগুলি সরবরাহ করে।
unwichtich

2

মাল্টি_অ্যাকসেপ্ট চালু করা আমার পক্ষে কাজ করেছে (ভিডিওটি প্রায় অর্ধেক থামিয়ে দিয়েছিল এবং দর্শক অন্য অর্ধেক শুনতে / দেখতে পাচ্ছিল না, খুব হতাশ হয়ে পড়ে)।

ইভেন্টগুলির আওতায় আমি কেবলমাত্র nginx.conf এ সেট করেছি:

events {
worker_connections 768;
multi_accept on;
}

** এটি আজ LOL কাজ করে .... আগামীকাল আমাদের কেবল এটি পুরোপুরি খেলছে কিনা তা দেখতে হবে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.