Linux 캐시 램 삭제 중

Linux 캐시 램 삭제 중

저는 8GB RAM을 갖춘 웹서버를 가지고 있으며 파일 조작, 그래프 작성, 이메일 전송, 포럼 등을 수행하는 매우 집약적인 PHP 사이트(1개 사이트)를 실행하고 있습니다. 환경은 정적인 것과는 거리가 멀기 때문에 서버에 대한 거의 모든 요청이 새 페이지나 업데이트된 페이지를 생성하기 때문에 RAM에 캐싱하여 얻을 수 있는 것이 거의 없다고 믿게 됩니다. 그리고 많은 캐싱이 클라이언트 측에서 수행되므로 이미지, 자바스크립트, CSS와 관련하여 수많은 304개의 요청이 있습니다.

또한 디스크에서 읽는 것보다 캐시된 램이 확실히 좋은 서버의 플랫 파일에 기록되는 언어 파일이 있습니다. 하지만 이와 같은 파일은 소수에 불과합니다.

약 2주 만에 98%의 여유 램이 4%의 여유 램으로 바뀌었습니다. 이는 여러 개의 대규모 svn 업데이트를 서버에 푸시하는 동안 발생했습니다.

제 질문은 다음 명령을 사용하여 주기적으로 캐시를 지울 때(캐시에 대한 Linus Torvalds의 생각을 알고 있습니다) 서버가 더 잘 조정될 수 있는지 여부입니다.

sync; echo 3 > /proc/sys/vm/drop_caches

아니면 다음 파일을 편집하는 것이 더 나을 것입니다.

/proc/sys/vm/swappiness  

기본값인 60을 30으로 바꾸면 스왑이 훨씬 줄어들고 오래된 캐시를 훨씬 더 많이 재사용할 수 있습니다.

첫 번째 명령을 사용하여 캐시가 모두 확보되는 것을 보는 것은 확실히 기분이 좋지만 이것이 데스크톱 환경에 좋다고 말하면 거짓말이 될 것입니다. 하지만 위에서 설명한 것과 같은 웹 서버는 어떻습니까? 생각?

편집: 시스템이 필요할 때 캐시 메모리에서 메모리를 획득한다는 것을 알고 있지만 명확하게 알려주셔서 감사합니다. 대부분의 서버 메모리가 캐시에 저장되어 있을 때 Apache 속도가 느려지는 상황을 상상하고 있습니까? 그건 전혀 다른 문제인가요?

답변1

캐시를 지우면 성능이 저하될 뿐 도움이 되지 않습니다. RAM이 다른 용도로 필요한 경우 다른 용도로 사용되므로 지우기를 수행한 후 잠시 동안 캐시 적중/실패 비율을 줄이는 것뿐입니다.

캐시의 데이터가 매우 오래된 경우(즉, 비정상적인 작업 중에 캐시된 항목인 경우) 인위적으로 삭제하지 않고도 필요에 따라 "새로운" 데이터로 교체됩니다.

정상적으로 실행되는 유일한 이유 sync; echo 3 > /proc/sys/vm/drop_caches는 일부 I/O 성능 테스트를 시도하고 알려진 상태를 시작하려는 경우입니다(실행 간에 캐시 삭제를 실행하여 각 캐시가 다르게 프라이밍되므로 결과의 차이를 줄입니다). 달리다).

캐시/버퍼에서 다시 요구할 수 있는 RAM이 많음에도 불구하고 커널은 때때로 몇 개의 페이지를 교환하며, 서버에 문제가 있다고 판단되면 교환 설정을 조정하여 이를 중지할 수 있습니다. 이로 인해 약간의 이익을 볼 수 있지만 일시적인 성과를 볼 가능성이 높습니다.떨어지다캐시+버퍼를 인위적으로 삭제하여

관련 정보