Tôi có chỉ số io cao. Viết cao. Nhưng những tập tin nào đang được viết?


14
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

Có cách nào để biết tập tin nào đang được viết không? 457 kB / s

Ngoài ra máy linux này có vấn đề tương tự.

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

Yêu cầu 1200 ghi mỗi giây cho một máy chủ không lưu trữ gì

Câu trả lời:


8

Chà, bạn có thể thử các lệnh sau có hiệu quả với tôi trong RHEL6:

1) Bất cứ thiết bị nào bạn thấy trong đầu ra "i bổ sung" thực hiện nhiều I / O hơn, hãy sử dụng nó với fuserlệnh như sau:

fuser -uvm device

2) Bạn sẽ nhận được một danh sách các quy trình với tên người dùng gây ra nhiều I / O hơn. Chọn các PIDS đó và sử dụng nó trong lsoflệnh như sau:

lsof -p PID | more

3) Bạn sẽ nhận được một danh sách các tập tin / thư mục cùng với người dùng thực hiện I / O tối đa.


root @ máy chủ cuntschi) php newgames 18456 ..c .. (newgames) php
user4951

5

Dường như không có công cụ nào để tìm ra thông lượng I / O trên mỗi tệp ngoài quy trình sử dụng tệp. Nhưng có nhiều cách để tìm ra thông lượng I / O của quá trình.

iotop - Đây là một tiện ích hàng đầu / iftop giống như hiển thị thông lượng I / O của quá trình.

Sau khi pin chỉ ra quá trình nào có I / O nặng, hãy sử dụng theo sau để tìm hiểu tập tin nào đang được sử dụng

lsof -c <process name>

Điều đó sẽ thu hẹp phạm vi và giúp xác định nguồn.


Làm thế nào để có được quá trình? lsof cũng không sản xuất gì. Một cái gì đó đang viết rất nhiều thứ và tôi không biết gì
user4951

Xin lỗi, tôi đặt tiện ích io sai. Nó nên iotop, không phải iostat. Tôi đã sửa câu trả lời của mình.
John Siu

(1) Bạn cũng có thể cập nhật bản phân phối nào (redhat / centos / ub Ubuntu ...) mà bạn đang chạy không? (2) Đây có phải là một cài đặt mới? (3) Bất kỳ chia sẻ tập tin như samba chạy?
John Siu

3

Bạn có thể sử dụng inotifywaittừ inotify-toolsđể tìm hiểu chính xác tập tin nào đang được ghi vào. Điều này sẽ không cho bạn biết có bao nhiêu dữ liệu được ghi, nhưng ít nhất nó sẽ cho bạn biết những tập tin nào được ghi vào khi nó xảy ra.

Ví dụ, lệnh này sẽ in tên tệp ngay khi bất kỳ được tạo, sửa đổi hoặc xóa trong /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

Thật không may, bạn sẽ cần phải đoán thư mục nào chứa các tệp được ghi vào. Điều này không thành công nếu bạn cố gắng sử dụng nó trên thư mục gốc, mặc dù rõ ràng có thể bị ghi đè:

$ 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

Sử dụng systemtap để theo dõi từng tòa nhà ghi / pwrite. Bạn có thể thực hiện một số kế toán và bạn sẽ thấy tập tin / fd nào nhận được nhiều byte nhất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.