প্রতি মিনিটে 100k হিট পেতে nginx কর্মী_প্রক্রিয়া টিউন করছেন


115

আমাদের একটি সার্ভার রয়েছে যা একটি এইচটিএমএল ফাইল সরবরাহ করে।

এই মুহূর্তে সার্ভারটিতে 2 টি সিপিইউ এবং 2 জিবি র‌্যাম রয়েছে। ব্লিটিজ.আইও থেকে, আমরা প্রতি সেকেন্ডে 250 একযোগে সংযোগ সহ 60 সেকেন্ডে 200 টাইমআউটগুলি থেকে প্রতি মিনিটে প্রায় 12 কে সংযোগ পাচ্ছি।

worker_processes  2;

events {
 worker_connections 1024;
}

আমি যদি সময়সীমা বাড়িয়ে দিই, প্রতিক্রিয়া সময়টি এক সেকেন্ড ছাড়িয়ে বড় হতে শুরু করে।

এর থেকে আরও রস বের করার জন্য আমি আর কী করতে পারি?

উত্তর:


188

কনফিগার ফাইল:

worker_processes  4;  # 2 * Number of CPUs

events {
    worker_connections  19000;  # It's the key to high performance - have a lot of connections available
}

worker_rlimit_nofile    20000;  # Each connection needs a filehandle (or 2 if you are proxying)


# Total amount of users you can serve = worker_processes * worker_connections

আরও তথ্য: উচ্চ ট্র্যাফিক লোডের জন্য এনগিনেক্স অপ্টিমাইজ করা


14
আমি মনে করি প্রতি সেকেন্ডে মোট ব্যবহারকারীদের জন্য সরবরাহ করা সমীকরণটি ভুল। পরিবর্তে প্রতি সেকেন্ডে পরিবেশন করা ব্যবহারকারীদের গড় পরিমাণ = কর্মী_প্রক্রিয়াগুলি * কর্মী_সংযোগগুলি / (কিয়ালাইভ_টাইমআউটআউট * ২) হওয়া উচিত, সুতরাং উপরের সিফ ফাইলটি প্রতি সেকেন্ডে .6 7.6 কে সংযোগগুলি সার্ভার করতে পারে, যা @ablemike এর প্রয়োজনের চেয়েও উপরে। যাইহোক, কর্মী_স্লিমিট_নোফাইল একটি ভাল নির্দেশিকা হ'ল, যদি উলিমিট সীমাবদ্ধ থাকে এবং আপনি এটি পরিবর্তন করতে চান না।
ইথান

2
@ ইথান, কেন এটি 2 দ্বারা বিভক্ত করা উচিত? যদি প্রতি সেকেন্ডে আমরা 100 টি নতুন সংযোগ পাই, এবং সময়সীমা 5 হয়, তবে ষষ্ঠ সেকেন্ডের সাথে স্ট্রিং করা হয়, আমাদের ক্রমাগত 5 * 100 সংযোগ থাকবে যা এখনও সার্ভারের পাশে শেষ হয় না। কিছু ব্যবহারকারী যদি নিজেই সংযোগ বাতিল করে দেয় তবে আমাদের কম থাকতে পারে
বুলাত

3
কিপালাইভ 0 টি (অক্ষম) সেট করা থাকলে সেই সূত্রটি কাজ করে না
টিলো

5
চিত্র / জেএস / সিএসএসের মতো স্থির ফাইলগুলির জন্যও প্রতিটি সংযোগের জন্য 2 টি ফাইল হ্যান্ডেলগুলি দরকার। এটি ক্লায়েন্টের সংযোগের জন্য 1 এবং স্থিতিশীল ফাইল খোলার জন্য 2 য়। অতএব, কর্মী_রশিত_নোফাইল = 2 * কর্মী_সংযোগগুলি পরিবর্তন করা নিরাপদ।
ইথান

4
কর্মী_রমিট_নোফাইল ব্যবহার করুন তবে প্রতিটি প্রক্রিয়া অনুযায়ী ওপেন ফাইল গণনা মান নির্ধারণ করতে 'উলিমিট-এন' কল করা উচিত। এটি init স্ক্রিপ্টে আরও ভাল করা হয়।
এথান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.