Ubuntu VM에서 iotop은 전체 디스크를 생성하는 일부 "apache2 -k start" 프로세스를 보여줍니다.읽다기록된 요청이 없더라도 부하는 항상 4M/s에서 7M/s 사이였습니다.
lsof는 www-data에서 사용되는 약 5000개의 일반 파일을 보여주었습니다. 디스크 IO가 전혀 없어야 하는데 그렇게 많은 디스크 IO를 유발하는 원인을 어떻게 확인할 수 있습니까?
답변1
높은 I/O의 징후에는 해당 I/O의 세부 정보를 드릴다운하는 추적 도구가 필요할 수 있습니다. strace
이를 수행하는 일반적인 방법은 다음과 같습니다.
strace -e trace=file -ff -o output -y -p $some_httpd_pid_here
-e trace=file
read
파일 관련 작업을 추적하지만(다른 편리한 지정자가 있습니다. 자세한 설명서를 참조하세요), 이에 대해 어떤 파일 설명자를 읽고 있는지 확인하는 데 필요할 수 있는 호출은 표시하지 않습니다 .-e trace=open,read
모든 것을 추적하고 출력을 grep합니다. ....-ff
CGI 등을 생성하거나httpd
시작 시 기본 프로세스를 따르는 경우 포크를 따르는 것이 좋습니다.-o output
파일과 상호 작용-ff
하고 나중에 볼 수 있도록 파일을 생성합니다output
.output.*
-y
이전 버전으로 이식할 수는 없지만strace
파일 설명자 42나 참조자를 찾는 수고를 덜 수 있습니다.
( strace
매우 느릴 수도 있습니다. 커널이 수행하는 작업을 추적하거나 디버깅하기 위한 Linux sysdig
또는 대안도 참조하세요...)SystemTap