2012-03-22 5 views
0

저는 주로 자바 스크립트로 구성된 하나의 웹 사이트를 운영합니다. IIS에서 호스팅했습니다. 이 웹 사이트는 하드 디스크의 특정 폴더에있는 이미지를 요청하고이를 최종 사용자에게 표시합니다. 이미지 요청이 매우 빈번하고 빠릅니다.어떻게 디스크 읽기 쓰기 오버 헤드를 줄일 수 있습니까?

디스크 읽기 작업의 오버 헤드를 줄일 수있는 방법이 있습니까?

하드 디스크의 일부분을 매핑하여 기본 메모리로 사용하는 메모리 매핑에 대해 들었습니다. 누군가 내가 잘못 했든 옳은지 누군가에게 말해 줄 수 있습니까? 내가 틀렸다면 다른 해결책이 있습니까?

+0

[메모리 관리]와 아무 관련이 없습니다. 나는 이것을 [java]로 바 꾸었습니다. 롤백을 승인하지 않은 경우 – check123

+0

당신은 신중하게 질문을 읽지 않았습니다 .... 나는 자바를 언급하지 않습니다 ... 자바 스크립트 ... – dhroove

답변

1

메모리 매핑은 실행 가능한 아이디어이지만 memcached를 사용하는 것이 좋습니다. 이것은 별개의 프로세스로 실행되며 수평 확장을 허용하고 가장 까다로운 웹 사이트 중 일부에서 실제 배포 및 테스트를 거쳤습니다. 잘 구현 된 memcached 서버는 reduce disk access 일 수 있습니다.

또한 인터넷을 비롯한 여러 언어에 대한 바인딩이 있습니다. Java 용 솔루션을 원한다고 가정합니다 (대부분의 태그는 해당 언어와 관련됩니다). 설치 및 기타 관리 작업에 대해서는 this article을 읽으십시오. 그것은 또한 당신이 시작할 수있는 자바 용 코드 샘플을 가지고있다. 의사 측면에서

, 당신은 당신이 말할 수에 대한 요청을받을 때, 무엇을해야하는지, Moon.jpeg은 다음과 같습니다

String key = md5_hash(Moon.jpeg); /* Or some other key generation mechanism */ 
IF key IN memcached 
    SUPPLY FROM memcached /* No disk access */ 
ELSE 
    READ Moon.jpeg FROM DISK 
    STORE IN memcached ASSOCIATED WITH key 
    SUPPLY 
END 

이 매우 원유 알고리즘은, 당신은 캐시 알고리즘에 대한 자세한 내용을보실 수 있습니다 this Wiki 기사입니다.

+0

당신은 이것을 구현하는데 도움을 얻을 수 있도록 약간의 링크 또는 어떤 것을 나눌 수 있습니까? – dhroove

+0

강연 중에 답변되었습니다. ;) 일단 내가 나가면 나는 할 것이다. 서버 측 기술은 무엇입니까? – check123

+0

nopes .. 저는 소프트웨어 개발자입니다 ... 현재 성능 문제로 싸우고 있습니다 ... 프로젝트 중 하나 인 – dhroove

0

잘못된 방향입니다. 디스크가 느려지도록 IO를 줄이려고합니다 (상대적). 파일을 실제 메모리에 매핑하려고합니다. 간단한 시나리오에서 OS는 자동으로 파일 캐시를 처리합니다. Windows에서 튜너 블 매개 변수를 제공하는지 또는 적어도 수집 할 수있는 성능 측정 항목을 확인하십시오.

내가 올바르게 기억하는 경우 (몇 년 전) IIS는 정적으로 파일을 매우 효율적으로 처리하기 때문에 커널 라우팅 드라이버가 IIS에 연결되어 있기 때문에 더 이상 ISAPI 필터 등을 통과하지 못할 수 있습니다. 는 Channel9 등 현명한 당신이 등 CloudFront를 같은 CDN 등으로 고정 자산을 이동 보일 것

장기 ..하지만 문제처럼

... 당신은 확실히 당신은 문제가?

+0

파일 캐시는 작동하지 않을 것입니다 ..이 파일들은 이미지가 그 특정 폴더에서 매일 바뀔 것입니다 .. 그 이유 난 매일이 메모리 매핑 된 파일에 이러한 파일을 추가 할 수있는 무언가를 찾고 있었다 ... – dhroove

+0

그게 좋아, 운영 체제는 파일 캐시를 관리하고, 물론 캐시 무효화의 자연 부분입니다. –