अनुरोध कुछ प्रक्रियाओं में केंद्रित हैं

घटना

कभी-कभी हम आदेश php start.php status के माध्यम से देखते हैं कि अनुरोध विशिष्ट प्रक्रियाओं में संसाधित हो रहे हैं, अन्य प्रक्रियाएँ पूरी तरह से खाली हैं।

अधिग्रहण तंत्र

workerman में कई प्रक्रियाएँ कनेक्शन प्राप्त करने का तरीका डिफ़ॉल्ट रूप से अधिग्रहणात्मक है, अर्थात जब क्लाइंट कनेक्शन शुरू करता है, तो सभी खाली प्रक्रियाओं को इस कनेक्शन को प्राप्त करने का अवसर मिलता है, पहले आने वाले को पहले प्राप्त होता है। यह तय करना कि कौन तेजी से करता है, ऑपरेटिंग सिस्टम के कोर शेड्यूलिंग द्वारा निर्धारित होता है। ऑपरेटिंग सिस्टम हाल ही में उपयोग की गई प्रक्रिया को CPU उपयोग का अधिकार प्राप्त करने के लिए प्राथमिकता दे सकता है, क्योंकि CPU रजिस्टर में पिछले प्रक्रिया की संदर्भ जानकारी हो सकती है, जिससे संदर्भ स्विचिंग की लागत को कम किया जा सकता है। इसलिए जब व्यावसायिक कार्य काफी तेज होते हैं या लोड परीक्षण के दौरान, कनेक्शन अधिकतर कुछ प्रक्रियाओं द्वारा संसाधित होते हैं, क्योंकि यह रणनीति बार-बार की प्रक्रिया स्विचिंग से बचती है, और प्रदर्शन आमतौर पर अनुकूलतम होता है, यह कोई समस्या नहीं है।

राउंड-रॉबिन तंत्र

workerman $worker->reusePort = true; सेट करके कनेक्शन प्राप्त करने के तरीके को राउंड-रॉबिन में बदल सकता है, राउंड-रॉबिन तरीके में कोर कनेक्शनों को लगभग समान रूप से सभी प्रक्रियाओं में विभाजित करता है, इस प्रकार सभी प्रक्रियाएँ मिलकर अनुरोधों को संसाधित करेंगी।

भ्रांतियाँ

कई डेवलपर्स मानते हैं कि सभी प्रक्रियाएँ अनुरोध संसाधित करने में शामिल होने से प्रदर्शन बेहतर होता है, लेकिन वास्तविकता में ऐसा हमेशा नहीं होता। जब व्यवसाय काफी सरल होते हैं, तो अनुरोध संसाधित करने वाली प्रक्रियाओं की संख्या CPU कोर की संख्या के करीब होने पर सर्वर की थ्रूपुट अधिक होती है। उदाहरण के लिए 4-कोर सर्वर पर, प्रक्रियाओं की संख्या 4 सेट की जाए, तो helloworld लोड परीक्षण में QPS आमतौर पर सबसे उच्चतम होता है। यदि संसाधित करने वाली प्रक्रियाओं की संख्या CPU कोर संख्या से बहुत अधिक हो जाती है, तो प्रक्रिया संदर्भ का ओवरहेड अधिक होता है, और प्रदर्शन धीमा हो जाता है। जब सामान्यतः डेटाबेस व्यवसाय के साथ होता है, तो प्रक्रियाओं की संख्या CPU कोर संख्या के 3 से 6 गुना सेट करने पर प्रदर्शन बेहतर हो सकता है।