Benim yüksek statüm var. Yüksek yazar. Ama hangi dosyalar yazılıyor?


16
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

Hangi dosyaların yazıldığını bilmenin bir yolu var mı? 457 kB / s

Ayrıca bu diğer linux makinesinde de aynı sorun var.

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

Hiçbir şey barındırmayan bir sunucu için saniyede 1200 yazma isteği

Yanıtlar:


8

RHEL6'da benim için çalışan aşağıdaki komutları deneyebilirsiniz:

1) Daha fazla G / Ç gerçekleştiren "iostat" çıkışında gördüğünüz aygıt ne olursa olsun fuser, aşağıdaki komutla kullanın :

fuser -uvm device

2) Kullanıcı adına sahip daha fazla G / Ç'ye neden olan işlemlerin bir listesini alırsınız. Bu PIDS'i seçin ve lsofkomutta aşağıdaki gibi kullanın :

lsof -p PID | more

3) Kullanıcıların maksimum G / Ç gerçekleştirmesiyle birlikte dosyaların / dizinlerin bir listesini alırsınız.


root @ host [~] # kaynaştırıcı -uv / home4 root @ host [~] # kaynaştırıcı -uvm / home4 KULLANICI PID ERİŞİM KOMUTANLIĞI / home4: newgames 18297 ..c .. (newgames) php cuntschi 18407 ..c .. ( cuntschi) php yeni oyunlar 18457 ..c .. (yeni oyunlar) php
user4951

5

Görünüşe göre, dosyayı kullanan işlem dışında dosya başına G / Ç verimini bulmak için herhangi bir araç yoktur. Ancak süreç G / Ç verimini bulmanın yolları vardır.

iotop - Proses G / Ç verimini gösteren bir üst / iftop benzeri yardımcı programdır.

Hangi işlemin ağır G / Ç olduğunu belirledikten sonra, hangi dosyanın kullanıldığını bulmak için aşağıdakileri kullanın

lsof -c <process name>

Bu kapsamı daraltmalı ve kaynağı saptamaya yardımcı olmalıdır.


süreç nasıl elde edilir? Ayrıca hiçbir şey üretmez. Bir şey çok şey yazıyor ve ne olduğunu bilmiyorum
user4951

Üzgünüm, yanlış io yardımcı programını koydum. Olmalı iotop, değil iostat. Cevabımı düzelttim.
John Siu

(1) Ayrıca hangi dağıtımı (redhat / centos / ubuntu ...) çalıştırdığınızı da güncelleyebilir misiniz? (2) Bu yeni bir kurulum mu? (3) Çalışan samba gibi bir dosya paylaşımı var mı?
John Siu

3

Sen kullanabilirsiniz inotifywaitgelen inotify-toolsyazıldığını hangi dosyanın tam olarak öğrenmek için. Bu size ne kadar veri yazıldığını göstermez, ancak en azından hangi dosyaların gerçekleştiğini yazdığınızı söyleyecektir.

Örnek olarak, bu komut dosya adını oluşturulduğunda, değiştirdiğinde veya silindiğinde dosya adını yazdırır /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

Maalesef hangi dizine yazıldığını gösteren dosyaları tahmin etmeniz gerekecek. Kök dizinde kullanmaya çalışırsanız, bu geçersiz kılınabiliyorsa, bu başarısız olur:

$ 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

Her yazma / pwrite sistem çağrısını izlemek için systemtap komutunu kullanın. Bazı muhasebe yapabilirsiniz ve hangi dosya / fd en fazla bayt alır göreceksiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.