2009-08-11 13 views
14

nginx प्रलेखन कहते हैं

max_clients = worker_processes * worker_connections 

लेकिन बीच के रिश्ते को क्या है इस में keepalive कारक कैसे करता है? मेरे पास 2 वर्कर्स_प्रोसेसेस और 8192 वर्कर्स_कनेक्शन के साथ मेरा कॉन्फ़िगरेशन सेटअप है; इसका मतलब है कि मैं सैद्धांतिक रूप से अधिकतम 16384 समवर्ती कनेक्शन संभाल सकता हूं। डेटा के 16384 धाराओं को एक साथ जोड़ना बेहद जरूरी है, लेकिन अगर मेरे पास 60s keepalive_timeout है तो प्रत्येक क्लाइंट के साथ 1 मिनट के लिए कनेक्शन को हॉगिंग करने के साथ उस नंबर का एक अलग अर्थ है। जो यह है?

यह सब कनेक्ट है $ कनेक्शन चर जो log_format निर्देश के साथ उपयोग किया जा सकता है। मैं निम्नलिखित लॉग प्रारूप में परिभाषित किया तो मैं सर्वर के प्रदर्शन का विश्लेषण कर सकते हैं:

log_format perf '$request_time $time_local $body_bytes_sent*$gzip_ratio $connection $pipe $status $request_uri'; 

कि $ कनेक्शन चर के आसपास 11-12 मिलियन कनेक्शन रिपोर्ट कर रहा है! मैं गणित प्रमुख नहीं हूं, लेकिन स्पष्ट रूप से यह संख्या कार्यकर्ता_प्रोसेसेस * वर्कर_कनेक्शन से अधिक है। तो इसका प्रतिनिधित्व करना क्या है?

संक्षेप में, मैं को का पता लगाने की कोशिश कर रहा हूं ताकि वर्कर्स_कनेक्शन के लिए एक अच्छा मूल्य निर्धारित किया जा सके।

उत्तर

9

$ कनेक्शन एक काउंटर है, न कि अभी उपयोग किए गए कनेक्शन की कुल संख्या। तो यह बढ़ने का इरादा है।

KeepAlive कनेक्शन खारिज नहीं किया जा सकता है, तो कमरे worker_processes * worker_connections है - keepalive कनेक्शन

+0

एक काउंटर! अब जब आप कहते हैं कि मैं पैटर्न देख सकता हूं। इस तरह के एक अस्पष्ट सवाल का जवाब देने के लिए धन्यवाद। – Daniel

1

बस पूरी तस्वीर कल्पना: पहले ग्राहक आप से जोड़ता है, एक फ़ाइल हो जाता है और फिर ब्राउज़र 60 सेकेंड के लिए कनेक्शन रहता है। एक और क्लाइंट कनेक्ट करता है, हो जाता है, और उसका कनेक्शन भी रखता है। पहले मिनट के अंत में, आपके पास पिछले 60 सेकेंड में आपके से कुछ अनुरोध करने के लिए अनुरोध किया गया था, फिर भी

इसलिए, सबसे खराब स्थिति में आप "worker_processes * worker_connections/keep_alive "एक सेकंड में कनेक्शन, यानी आपकी संख्या के लिए लगभग 260। यदि आप और अधिक की जरूरत है, तो आप अधिक कनेक्शन alloc चाहिए - बस keepalives की सेवा के लिए: Tuning nginx worker_process to obtain 100k hits per min

afaik nginx में मेरी answerr पढ़ स्मृति के 2.5MB में निष्क्रिय (keepalived) कनेक्शन की 10k पकड़ सकता है, तो worker_connections में वृद्धि, सस्ते बहुत सस्ता है । मुझे लगता है कि यहां मुख्य बाधा आपके ओएस हो सकती है