2010-09-17 17 views
8

हमारे पास एक नया ग्राहक है, और वर्तमान में हम 100 समवर्ती http थ्रेड (जेएमटर का उपयोग कर) के साथ सर्वर जैसे उत्पादन पर तनाव परीक्षण कर रहे हैं। समस्या यह है कि हमारे पास 2 ज़ीऑन प्रोसेसर (4 कोर के साथ प्रत्येक सीपीयू, कुल 8 कोर) है, मैं केवल 4 कोर का उपयोग कर टॉमकैट देख सकता हूं, न कि 8 कोर। 4 कोर मुझे विश्वास है कि यह केवल 1 प्रोसेसर से संबंधित है। अन्य 4 धागे वस्तुतः सो रहे हैं। http://tomcat.apache.org/tomcat-6.0-doc/config/http.html1 से अधिक CPU का उपयोग करने के लिए टोमकैट को कॉन्फ़िगर कैसे करें?

हम maxThreads = "150" minSpareThreads साथ tomcatThreadPool करने के लिए डिफ़ॉल्ट कनेक्टर को बदलने के लिए है:

मैं अपाचे दस्तावेज़ से धारणा है कि अगर हम बहु सीपीयू मशीन है, हम कॉन्फ़िगर करना चाहिए acceptorThreadCount = "2" मिला = "4" और कनेक्टर निष्पादक स्वीकार्य करने के लिए थ्रेडकाउंट = "2"। लेकिन यह अभी भी 1 सीपीयू का उपयोग कर रहा है।

कोई भी विचार सभी कोर (या सभी सीपीयू प्रोसेसर) का उपयोग करने के लिए कॉन्फ़िगर कैसे करें?

+1

जेवीएम उपयोग करता है, तो हो सकता है कि आपका लोड अभी तक पर्याप्त न हो। क्या आप बढ़ सकते हैं और कोशिश कर सकते हैं? – JoseK

+0

मैंने 200 और 300 धागे के साथ प्रयास किया है, यह अभी भी वही है। – Reusable

+0

कौन सा ओएस चालू है? – Sean

उत्तर

3

आपकी मदद करने के लिए एक जोड़े यादृच्छिक विचार।

जेवीएम आंतरिक रूप से कार्यों का अपना शेड्यूलिंग करेगा। ऐसे समय होते हैं जब JVM ऐसा नहीं लगता कि एक सीपीयू कर लगाया जा रहा है, यह महत्वपूर्ण संचालन के लिए कुछ कोर आरक्षित कर सकता है। इसलिए आप कुछ कोर इस्तेमाल करते हैं और दूसरों को निष्क्रिय रहते हैं।

एक और संभावना यह है कि सीपीयू संबंध को स्पष्ट रूप से सेट करने की आवश्यकता है। यूनिक्स में आप देख सकते हैं कि सीपीयू JVM के साथ उपयोग करने के लिए taskset command ::

taskset -p <pid> 

Windows में, अपने कार्य प्रबंधक को लाने, प्रक्रिया टैब पर जाएँ, सही एक प्रक्रिया क्लिक चुना गया है है और संबद्धता सेट चुनें । आप देख सकते हैं कि कौन से सीपीयू/कोर का उपयोग किया जा रहा है।

मुझे जावा उपयोग को नियंत्रित करने के लिए जावा/टॉमकैट में स्टार्ट-अप पैरामीटर से अवगत नहीं है। मेरा मानना ​​है कि यह ओएस स्तर पर होना चाहिए। मुझे कभी भी इस्तेमाल होने वाले सीपीयू/कोरों की संख्या को सीमित करने के लिए कोड किए गए जेवीएम के बारे में पढ़ने को याद नहीं है।

2

@ जोसेक द्वारा टिप्पणी पूरी बाधा को ट्रिगर करती है। हमारा आवेदन बहुत अधिक लॉग लिख रहा है। एक उदाहरण पर हम अपनी लॉग फ़ाइल में लॉग की मात्रा को कम करने की कोशिश कर रहे थे, हमने देखा कि समग्र प्रदर्शन बेहतर और उच्च CPU उपयोग है।

फिर हम लॉग 4k लॉग स्तर "वॉर्न" के साथ प्रयास करते हैं, और वाह! आवेदन सभी सीपीयू कोर का 70% उपयोग कर रहा है।

हमें प्रश्न पूछने से पहले डिस्क उपयोग की जांच करनी चाहिए। धन्यवाद!

+0

यह डिस्क एक्सेस की संभावना नहीं है, बल्कि लॉगिंग फ्रेमवर्क में आंतरिक लॉकिंग है जो आपके एप्लिकेशन को अधिक क्रमिक रूप से करने के लिए थ्रॉटल करता है। – nos

+0

हो सकता है। हम सब जानते हैं कि अब लॉग बंद कर रहा है, एप्लिकेशन बेहतर प्रदर्शन करता है। मेरे पास अभी भी खेलने के लिए 2 और दिन हैं। क्या लॉग 4j में कोई बेहतर लॉगिंग फ्रेमवर्क या कोई विशेष कॉन्फ़िगरेशन है जो तेजी से हो सकता है? – Reusable

+0

@ पुन: प्रयोज्य: किसी भी मदद के लिए बहुत देर हो चुकी है --- अधिकांश लॉगिंग फ्रेमवर्क में नेटवर्क एपेंडर होता है। वे आपके द्वारा वर्णित फ़ाइल लॉकिंग समस्याओं से पीड़ित नहीं होते हैं। –

संबंधित मुद्दे