본문으로 바로가기

웹서버를 향상시키기 위한 여러가지 기법들이 있습니다. 그 중에 파일 속성을 이용한 서버 성능 향상에 대한 부분을 다루어 봅니다.

파일 속성 변경으로 Disk I/O 줄이기

chattr를 이용하여 파일의 속성을 변경할 수 있다. 이 속성은 파일 시스템 차원에서 제어를 하는 것이기 때문에 소유권이나 퍼미션과는 관계없이 별도로 작동한다.

chattr +-= [ASacdisu] 파일이름 또는 디렉토리

'+' : 지정한 옵션을 추가한다는 의미

'-' : 지정한 옵션을 삭제한다는 의미

'=' : 지정된 옵션을 초기화하여 설정한다는 의미

[옵션]

A : 파일에 대한 atime 즉 접근시간 속성을 변경할  수 있다.

a : append(추가)만이 가능하다.

i : 가장 많이 사용되는 것으로 immutable 의 의미로 파일의 추가, 변경, 삭제등이 불가능하다.


파일을 마지막으로 읽은 시각(접근 시간)이 시스템 내부에서는 계속 업데이트 된다. 따라서 접속자가 많은 유명한 웹 사이트의 index.html 은 유저들이 사이트를 방문할 때마다 이 파일을 매번 읽게 되므로 하루에도 엄청난 접근시각 정보를 업데이트 하게 되어 Disk I/O  가 상당히 발생하게 될 것이다. 따라서 이 속성(A)을 추가하면 접근시각은 업데이트 하지 않게 되어 불필요한 Disk I/O 를 줄이게 된다.


index.html 파일이 존재하는 디렉토리로 이동후

stat index.html

위의 결과중 Access: 라는 부분이 있는데, 이 부분이 바로 파일에 대한 접근시각을 나타낸다.

SSD 사용자를 위한 정보

파일 시스템의 접근 시간 갱신 기능을 작동시키면 드라이브 성능이 현저하게 저하된다. 파일을 읽을 때마다 파일의 아이노드가 갱신되고 이로 인해 쓰기작업이 빈번하게 일어나 이런 종류의 저장 장치를 사용할 때 큰 문제가 되곤 한다. 이 문제를 해결하기 위해서는 mount 명령에 noatime 옵션을 적용하면 되는데 이 옵션을 항상 적용하기 위해 /etc/fstab 안에 옵션을 지정하면 된다. 온라인에서 noatime ssd로 검색하면 이와 관련된 많은 문서를 찾아 볼 수 있다.