동일한 장치에서 실행되는 웹 서버와 Apache에서 실행되는 여러 웹 응용 프로그램이 있습니다.
어느 날 나는 100,000개가 넘는 파일이 들어 있는 폴더에서 a와 a를 실행해야 했습니다 chown -R
. chmod -R
이 작업에는 시간이 좀 걸렸고 디스크 IO로 인해 모든 응용 프로그램이 오랫동안 극도로 느리게 실행된다는 것을 깨달았습니다. 명령이 완료된 후 몇 분 동안 CPU 사용량도 높습니다.
여러 장치를 사용하면 디스크 IO 차단이 줄어들까요?
각 애플리케이션을 다른 장치에 배치하면 디스크 IO가 동일한 방식으로 서버의 전체 성능에 영향을 줍니까?
디스크 IO 차단은 디스크별로 나누어지나요, 아니면 전체 시스템으로 나누어지나요?
답변1
기계적 저장 장치는 기계적이기 때문에 속도가 느립니다. (기타 비기계식 저장 장치도 속도가 느릴 수 있지만 이유와 방식이 다릅니다.) 기계식 디스크의 각 I/O 작업에는 고정된 시간이 걸립니다(시간을 추구, 밀리초 단위로 측정) 디스크에서 위치를 찾기 위한 시간과 데이터를 전송하는 데 소요되는 가변 시간(디스크의 특성에 따라 일반적으로 40~200MiB/초 사이)입니다. 많은 소규모 작업을 수행할 때 검색 시간이 지배적입니다. 단일 회전 디스크는 초당 수백 I/O 작업(IOPS)만 수행할 수 있습니다. 값비싼 15kRPM SAS 디스크는 약 200 IOPS를 달성할 수 있고 일반 7.2kRPM SATA 디스크는 100을 달성합니다. IOPS는 작고 저렴한 5.4kRPM 디스크의 약 70과 비교됩니다.
여러 디스크를 사용하면 도움이 될 수 있습니다 - 제공된 I/O 작업사용 가능한 디스크에 분산. 적절한 소프트웨어 또는 하드웨어 구성을 통해 사용 가능한 디스크 간의 I/O 작업 배포를 자동화할 수 있습니다. 연결된 스토리지 어레이 등을 통한 특수 하드웨어 사용저장 영역 네트워크개인 용도로 사용되는 기업 수준 애플리케이션에 선호되는 일반적인 접근 방식은 소프트웨어를 사용하는 것입니다.공격;좋은 출발점은 다음과 같습니다.리눅스 디스크 어레이위키피디아. RAID는 처리량 및/또는 안정성을 향상시킬 수 있습니다. 처리량을 늘리는 것이 목표라면 RAID 0 및 RAID 10과 같은 스트라이프 RAID 수준을 고려해야 합니다.
답변2
문제는 대부분의 파일 시스템이 그렇게 많은 파일을 제대로 지원하지 않는다는 점이라고 생각합니다.
따라서 한 디렉터리에 너무 많은 파일을 두지 말고 하위 디렉터리로 나누십시오.
웹 서버를 너무 많이 방해하지 않도록 느린 작업을 수행할 때 nice/renice
이 작업을 수행 할 수 있습니다. chmod
그러나 첫 번째 단락에서 썼듯이 이는 많은 파일의 문제이므로 커널 모드에서 너무 많은 잠금과 시간이 발생하므로 실제로는 문제가 해결되지 않습니다.
다른 장치가 있으면 도움이 될 수 있지만 IMHO 실제 IO는 디렉토리가 크기 때문에 커널 작업보다 훨씬 크지 않습니다.
[참고: 매우 큰 파일을 이동해도 속도 저하가 발생하지 않으므로 단순한 I/O 문제가 아닙니다.]