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 kB / 초

또한이 다른 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) 더 많은 I / O를 수행하는 "iostat"출력에 표시되는 장치 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 사용자 PID 액세스 명령 / home4 : newgames 18297 ..c. (newgames) php cuntschi 18407 ..c .. ( cuntschi) php newgames 18457 ..c .. (newgames) php
user4951

5

파일을 사용하는 프로세스 이외의 파일 당 I / O 처리량을 찾는 도구가없는 것 같습니다. 그러나 프로세스 I / O 처리량을 찾는 방법이 있습니다.

iotop-프로세스 I / O 처리량을 보여주는 top / iftop과 같은 유틸리티입니다.

어떤 프로세스가 I / O가 많은 프로세스인지를 정확히 지적한 후 다음을 사용하여 사용중인 파일을 찾으십시오.

lsof -c <process name>

이는 범위를 좁히고 소스를 정확히 찾아내는 데 도움이됩니다.


프로세스를 얻는 방법? lsof도 아무것도 생산하지 않습니다. 뭔가 너무 많은 것들을 쓰고 있고 나는 무엇을 모른다
user4951

죄송합니다, 잘못된 io 유틸리티를 넣었습니다. 그것은해야 iotop하지 iostat. 나는 내 대답을 수정했다.
John Siu

(1) 실행중인 배포판 (redhat / centos / ubuntu ...)을 업데이트 할 수 있습니까? (2) 새로 설치 했습니까? (3) 삼바 실행과 같은 파일 공유가 있습니까?
John Siu

3

inotifywaitfrom 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

systemtap을 사용하여 각 쓰기 / pwrite syscall을 모니터하십시오. 당신은 약간의 회계를 수행 할 수 있으며 가장 많은 바이트를 얻는 파일 / fd를 볼 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.