मेरे पास उच्च io प्रतिमा है। ऊँचा लिखता है। लेकिन क्या फाइलें लिखी जा रही हैं?


15
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          11.50    0.02    5.38    0.07    0.00   83.04

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sdc               0.01    89.92    0.26   41.59     3.36   457.19    22.01     0.23    5.60   0.09   0.38
sdb               0.10    15.59    0.40   14.55     8.96   120.57    17.33     0.04    2.91   0.07   0.11
sda               0.13    45.37    0.96    8.09    20.06   213.56    51.63     0.02    2.64   0.16   0.14
sde               0.01    31.83    0.09   11.34     0.94   103.56    18.29     0.04    3.52   0.14   0.16
sdd               0.01    48.01    0.13   19.81     1.58   202.16    20.44     0.11    5.62   0.13   0.25

क्या यह जानने का कोई तरीका है कि क्या फाइलें लिखी जा रही हैं? 457 केबी / एस

इसके अलावा इस अन्य linux मशीन में भी यही समस्या है।

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          20.50    0.00   46.48   20.74    0.00   12.28

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.17    11.61    0.99    3.51    36.65    59.43    42.70     0.10   23.20   3.84   1.73
sdb               0.55   224.18   24.30   97.45   246.48  1287.12    25.19     3.96   32.53   7.88  95.91
sdd               0.53   226.75   25.56   90.96   283.50  1271.69    26.69     3.43   29.44   8.22  95.75
sdc               0.00     1.76    0.28    0.06     4.73     7.26    70.41     0.00   12.00   2.12   0.07
dm-0              0.00     0.00    1.11   14.77    36.41    58.92    12.01     1.00   62.86   1.09   1.74
dm-1              0.00     0.00    0.04    0.12     0.17     0.49     8.00     0.00   21.79   2.47   0.04
dm-2              0.00     0.00    0.01    0.00     0.05     0.01     8.50     0.00    7.90   2.08   0.00

1200 एक सर्वर के लिए प्रति सेकंड अनुरोध लिखें जो कुछ भी होस्ट नहीं करता है

जवाबों:


8

खैर, आप निम्नलिखित आदेशों की कोशिश कर सकते हैं जो मेरे लिए RHEL6 में काम करते हैं:

1) जो भी डिवाइस आपको "iostat" आउटपुट में दिखाई देता है वह अधिक I / O का प्रदर्शन करता है, इसे fuserनिम्नानुसार कमांड के साथ उपयोग करें :

fuser -uvm device

2) आपको उपयोगकर्ता नाम के साथ प्रक्रियाओं की एक सूची मिलेगी, जिसके कारण I / O अधिक होगा। उन PIDS का चयन करें और lsofआदेश में इसका उपयोग इस प्रकार है:

lsof -p PID | more

3) आपको अधिकतम I / O प्रदर्शन करने वाले उपयोगकर्ता के साथ फाइलों / निर्देशिकाओं की एक सूची मिलेगी।


root @ host [~] # fuser -uv / home4 root @ host [~] # fuser -uvm / home4 USER PID ACCESS COMMAND / home4: newgames 18297 ..c .. (newgames) phunt cuntschi 18407 ..c .. ( cuntchi) php newgames 18457 ..c .. (newgames) php
user4951

5

ऐसा लगता है कि फ़ाइल का उपयोग करने की प्रक्रिया के अलावा प्रति फ़ाइल I / O थ्रूपुट का पता लगाने के लिए कोई उपकरण नहीं है। लेकिन प्रक्रिया I / O थ्रूपुट का पता लगाने के तरीके हैं।

iotop - यह उपयोगिता की तरह एक शीर्ष / iftop है जो प्रक्रिया I / O थ्रूपुट दिखाती है।

पिन इंगित करने के बाद कि कौन सी प्रक्रिया में I / O भारी है, यह जानने के लिए कि किस फ़ाइल का उपयोग किया जा रहा है, का उपयोग करें

lsof -c <process name>

इस दायरे को कम करना चाहिए और स्रोत को इंगित करने में मदद करनी चाहिए।


प्रक्रिया कैसे प्राप्त करें? lsof भी कुछ नहीं पैदा करता है। कुछ इतनी बातें लिख रहा है और मुझे नहीं पता कि क्या है
user4951

क्षमा करें, मैंने गलत io उपयोगिता डाल दी है। यह होना चाहिए iotop, नहीं iostat। मैंने अपना जवाब सही किया।
जॉन सियु

(1) क्या आप यह भी अपडेट कर सकते हैं कि आप कौन से डिस्ट्रो (रेडहैट / सेंटो / यूबुंटु ...) चला रहे हैं? (२) क्या यह एक नई स्थापना है? (३) सांबा चलाने जैसी कोई फ़ाइल साझा करना?
जॉन सिउ

3

आप उपयोग कर सकते हैं inotifywaitसे inotify-toolsवास्तव में पता लगाने के लिए जो फाइल करने के लिए लिखा जा रहा है। यह आपको नहीं बताएगा कि कितना डेटा लिखा जा रहा है, लेकिन यह कम से कम आपको यह बताएगा कि ऐसा होने पर क्या फाइलें लिखी जा रही हैं।

एक उदाहरण के रूप में, यह कमांड फाइल का नाम जैसे ही बनाया जाएगा, संशोधित किया जाएगा या इसमें हटा दिया जाएगा /tmp:

$ sudo inotifywait -e modify -e attrib -e move -e create -e delete -m -r /tmp
Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.
/tmp/ CREATE test
/tmp/ MODIFY test

दुर्भाग्य से आपको यह अनुमान लगाने की आवश्यकता होगी कि किस निर्देशिका में फाइलें लिखी जा रही हैं। यदि आप इसे मूल निर्देशिका पर उपयोग करने का प्रयास करते हैं, तो यह विफल रहता है, हालांकि स्पष्ट रूप से इसे ओवरराइड किया जा सकता है:

$ sudo inotifywait -e modify -e attrib -e move -e create -e delete -m -r /
Setting up watches.  Beware: since -r was given, this may take a while!
Failed to watch /; upper limit on inotify watches reached!
Please increase the amount of inotify watches allowed per user via `/proc/sys/fs/inotify/max_user_watches'.

2

प्रत्येक लिखने / लिखने के लिए syscall की निगरानी के लिए systemtap का उपयोग करें। आप कुछ लेखांकन कर सकते हैं और आप देखेंगे कि किस फ़ाइल / fd को सबसे अधिक बाइट मिलती हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.