का उपयोग कर मेरे पास एक जावा ऐप सेंटोस 6.0 पर चल रहा है। यह हमेशा cron के माध्यम से पृष्ठभूमि में चलाता है। कभी-कभी यह ऐप 100% सीपीयू का उपयोग करते समय प्रतीक्षा स्थिति में जाता है।जावा 100% सीपीयू
मेरे जावा संस्करण है:
java version "1.6.0_17"
OpenJDK Runtime Environment (IcedTea6 1.7.4) (rhel-1.21.b17.el6-x86_64)
OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)
अन्य लक्षण हैं:
एक। प्रतीत होता है कि प्रक्रिया का एक धागा एक लूप में कुछ के लिए इंतजार कर रहा है। जब strace का उपयोग कर पता लगाया है, यह ओ/p लगातार निम्न दिखाता है:
futex(0x7fb8000ac728, FUTEX_WAKE_PRIVATE, 1) = 0 futex(0x7fb8000ac754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1340347489,> 822867000}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
ज। ऐसा लगता है कि प्रक्रिया का काम पूरा हो गया है, जो फाइलों का उपयोग कर रहा है। केवल कुछ फाइलें बाकी हैं। 'Ls/proc/पीआईडी / fd/शो के उत्पादन:
lr-x------ 1 root root 64 Jun 22 13:13 0 -> pipe:[77107601] l-wx------ 1 root root 64 Jun 22 13:13 1 -> pipe:[77120162] l-wx------ 1 root root 64 Jun 22 13:13 2 -> /var/log/mithi/mcs/agent_account_mailstore_exceed_limit.sh.log lr-x------ 1 root root 64 Jun 22 13:13 3 -> /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/rt.jar
किसी को भी ऐसी ही स्थिति का सामना करना पड़ा है? कोई भी संकेत या संदर्भ बहुत उपयोगी होंगे।
अधिक विशेष रूप से, CentOS 6 पर पृष्ठभूमि में openjdk आधारित जावा प्रक्रियाओं को चलाने में कोई ज्ञात समस्याएं हैं?
अब मैं एक बहुत ही सरल अनंत लूप के साथ समस्या यह अनुकरण करने में सक्षम हूँ,
#!/bin/bash
while [ 1 ]
do
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/bin/java -version &
sleep 1s
done
नीचे दिए गए इस स्क्रिप्ट के बारे में 3 के लिए चलाया जाता है - 4 घंटे, मैं एक या दो जावा प्रक्रियाएं हैं जो लगता है लटका दिया या समान लक्षण के साथ अनंत लूप में यानी
futex(0x7fb8000ac754, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1340347489,> 822867000}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
यह केवल, एकल प्रोसेसर सिस्टम पर नहीं मल्टीप्रोसेसर सिस्टम पर हो रहा है। इसे RHEL6 पर भी अनुकरण किया जा सकता है, न केवल CentOS6।
अपस्ट्रीम [कर्नेल बग 32 9 22] (https://bugzilla.kernel.org/show_bug.cgi?id=32922) के कारण, 3.14 के बाद अपस्ट्रीम कर्नेल संस्करणों में और 3.18 में तय किया गया। लेकिन बग को कुछ डिस्ट्रोज़ (जैसे सेंटोस 6) में पहले कर्नेल संस्करणों में बैकपोर्ट में उठाया गया था। इस [Google समूह चर्चा] में लंबी बातचीत देखें (https://groups.google.com/forum/#!विषय/यांत्रिक-सहानुभूति/QbmpZxp6C64) –