kworker भस्म + 90% IO और शून्य डिस्क लिखते हैं


22

यह AWS लिनक्स AMI + EBS पर एक मानक अपाचे वेब सर्वर है। हम उच्च लोड औसत (+8) और iotop -aशो देख रहे हैं :

Total DISK READ: 0.00 B/s | Total DISK WRITE: 2.37 M/s

  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND             
 3730 be/4 root          0.00 B      0.00 B  0.00 % 91.98 % [kworker/u8:1]
  774 be/3 root          0.00 B   1636.00 K  0.00 % 15.77 % [jbd2/xvda1-8]
 3215 be/4 apache        0.00 B     40.39 M  0.00 %  0.88 % httpd
 3270 be/4 apache        0.00 B     38.20 M  0.00 %  0.93 % httpd
 2770 be/4 apache        0.00 B     46.86 M  0.00 %  0.71 % httpd

जब अपाचे नीचे होता है, तो केवर्कर और जेडबी 2 भी नीचे होता है।

सर्वर स्वैप नहीं कर रहा है क्योंकि हमारे पास भरपूर रैम उपलब्ध है। मैंने डेटाबेस सर्वर से संबंधित इस मुद्दे को देखा है, लेकिन केवल अपाचे के लिए अलग-थलग नहीं है।

इसे आगे कैसे निदान किया जाए और इसे कैसे रोका जाए, इस पर कोई विचार?

अद्यतन 1: संपूर्ण रिपोर्ट (सही रिकॉर्ड -g -a नींद 10)

Samples: 114K of event 'cpu-clock', Event count (approx.): 28728500000
-  83.58%          swapper  [kernel.kallsyms]         [k] xen_hypercall_sched_op                                          ◆
   + xen_hypercall_sched_op                                                                                               ▒
   + default_idle                                                                                                         ▒
   + arch_cpu_idle                                                                                                        ▒
   - cpu_startup_entry                                                                                                    ▒
        70.16% cpu_bringup_and_idle                                                                                       ▒
      - 29.84% rest_init                                                                                                  ▒
           start_kernel                                                                                                   ▒
           x86_64_start_reservations                                                                                      ▒
           xen_start_kernel                                                                                               ▒
+   1.73%            httpd  [kernel.kallsyms]         [k] __d_lookup_rcu                                                  ▒
+   1.08%            httpd  [kernel.kallsyms]         [k] xen_hypercall_xen_version                                       ▒
+   0.38%            httpd  [vdso]                    [.] 0x0000000000000d7c                                              ▒
+   0.36%            httpd  libphp5.so                [.] zend_hash_find                                                  ▒
+   0.33%            httpd  libphp5.so                [.] _zend_hash_add_or_update                                        ▒
+   0.25%            httpd  libc-2.17.so              [.] __memcpy_ssse3                                                  ▒
+   0.24%            httpd  libphp5.so                [.] _zval_ptr_dtor                                                  ▒
+   0.24%            httpd  [kernel.kallsyms]         [k] __audit_syscall_entry                                           ▒
+   0.22%            httpd  [kernel.kallsyms]         [k] pvclock_clocksource_read                                        ▒

3
आप एक समस्या निवारण कदम के रूप में kworker क्या कर रहा है यह पता लगाने के लिए perf का उपयोग करना चाह सकते हैं ।
डेविड श्वार्ट्ज

kworker का व्यवहार तकनीकी रूप से दिलचस्प है, लेकिन मुझे आश्चर्य है कि अपाचे धागे डिस्क पर मेगाबाइट क्यों लिख रहे हैं। यह मानते हुए कि 2MB / s की व्याख्या करता है, क्या वह वेब सर्वर के लिए उच्च नहीं है? तब कोई लिखी जा रही फाइलों की पहचान कर सकता है, जैसे strace -p(और शायद lsof) और देखें कि क्या कुछ दिलचस्प दिखाता है।
sourcejedi

1
क्या यह किसी भी मौके से गमागमन है?
१२:२२

1
sendfileशून्य प्रतिलिपि का लाभ उठाने के लिए अपाचे पर सक्षम करने का प्रयास करें ।
fgbreel

1
@ user2383712 यह समस्या शायद आपके क्लाउड "पड़ोसी" से संबंधित है, क्या आप इस समस्या के बारे में aws से संपर्क कर सकते हैं, यदि आप इसे हाइपरविजर बदलने के लिए aws उदाहरण को बंद करने का प्रयास नहीं करते हैं, तो मुझे अतीत में यह समस्या हुई थी।
एलिन आंद्रेई

जवाबों:


5

100% IO का मतलब यह नहीं है कि यह आपके सभी IO परिचालनों का उपयोग कर रहा है। इसका मतलब है कि यह कुछ नहीं कर रहा है बल्कि IO पर इंतज़ार कर रहा है। इसलिए, निम्न / शून्य डिस्क बैंडविड्थ के साथ उच्च% IO सामान्य हो सकता है।

man iotop:

[...] यह समय की थ्रेड / प्रक्रिया को स्वैप करते समय और आई / ओ पर प्रतीक्षा करते समय खर्च किए गए प्रतिशत को भी प्रदर्शित करता है।

यह एक अलग मुद्दा हो सकता है अगर आपका kworkerआईओ हमेशा के लिए इंतजार कर रहा है, लेकिन मुझे नहीं पता। शायद यह एक पाइप या कुछ पर इंतजार कर रहा है। मैं kworkerकभी-कभी अपने सर्वर पर भी ऐसा ही करता हूं, और यह कोई समस्या नहीं है। (मैंने इसे पहली बार देखा तो घबरा गया।)


1
यह एक साझा वातावरण में भी है, जहां वे सभी एक ही भंडारण सरणियों का उपयोग करते हैं। यह एक व्यस्त डिस्क का संकेत है (जिनमें से VM कुछ भी नहीं जान सकता है क्योंकि यह प्रभावी रूप से पृथक है)। समर्पित हार्डवेयर पर, यह बहुत अधिक होने की संभावना होगी, जिसमें बहुत सारे रिट्रीट होंगे। नेटवर्क माउंटेड एक्सेस पर, इसका मतलब खराब लिंक के साथ-साथ एनएएस / लक्ष्य साइड कंजेशन हो सकता है।
स्पूलर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.