प्रति मिनट 100k हिट प्राप्त करने के लिए ट्यूनिंग नग्नेक्स कार्यकर्ता_प्रो


115

हमारे पास एक सर्वर है जो एक html फाइल परोस रहा है।

अभी सर्वर में 2 CPU और 2GB RAM है। ब्लिट्ज.आईओ से, हमें प्रति मिनट लगभग 12k कनेक्शन मिल रहे हैं और हर 60 सेकंड में 250 समवर्ती कनेक्शन के साथ 60 सेकंड में कहीं भी।

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

अधिक जानकारी: उच्च यातायात भार के लिए nginx का अनुकूलन करना


14
मुझे लगता है कि प्रति सेकंड उपयोगकर्ताओं की कुल राशि के लिए प्रदान किया गया समीकरण गलत है। इसके बजाय उपयोगकर्ताओं की प्रति सेकेंड की औसत मात्रा = कार्यकर्ता_प्रोसेस * कार्यकर्ता_कनेक्ट / (रखवाली_टाइमआउट * 2) होनी चाहिए, इसलिए, उपरोक्त गोपनीय फ़ाइल प्रति सेकंड सर्वर 7.6 7.6 कनेक्शन हो सकती है, जो कि @ablebikeike की जरूरत से ऊपर है। हालांकि, वर्कर_लिमिट_नॉफाइल उपयोग करने के लिए एक अच्छा निर्देश है, यदि अल्सरिट प्रतिबंधात्मक है और आप इसे संशोधित नहीं करना चाहते हैं।
एथन

2
@ ईथन, इसे 2 से क्यों विभाजित किया जाना चाहिए? यदि प्रत्येक सेकंड में हमें 100 नए कनेक्शन मिलते हैं, और टाइमआउट 5 है, तो छठे सेकंड के साथ घूमते हुए, हमारे पास लगातार 5 * 100 कनेक्शन होंगे जो अभी भी सर्वर साइड पर समाप्त नहीं हुए हैं। यदि कुछ उपयोगकर्ता स्वयं ही गर्भपात कर रहे हैं, तो हम कम हो सकते हैं
Bulat

3
यदि सूत्र 0s (अक्षम) पर सेट किया गया है, तो यह सूत्र काम नहीं करता है
Tilo

5
प्रत्येक कनेक्शन को इमेजेस / जेएस / सीएसएस जैसी स्थिर फाइलों के लिए भी 2 फाइल हैंडल की आवश्यकता होती है। यह क्लाइंट के कनेक्शन के लिए 1 है और स्टैटिक फ़ाइल खोलने के लिए 2 है। इसलिए, यह कार्यकर्ता_प्रबंधित_नौफिले = 2 * कार्यकर्ता_संबंधों को बदलने के लिए सुरक्षित है।
एथन

4
वर्कर_ब्र्लीट_नॉफाइल का उपयोग करें, लेकिन किसी को भी प्रक्रिया के लिए ओपन फाइल काउंट वैल्यू सेट करने के लिए 'अलिमिट-एन' कॉल करना चाहिए। इनिट स्क्रिप्ट में यह बेहतर है।
एथन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.