글쓴사람 관리자
글쓴시간2003년 8월 15일 오후 1시 47분 54초
    제목[알림] 캐쉬지원불가
보통 성능을 위해 PHP를 아파치모듈로 설치해서 사용하는데,

아파치 1.3 , 2.0 에 관계없이 php의 flock() 함수가 제대로 동작하지 않습니다.

자체적으로 구현해보려고 했지만,

php 에러핸들링의 제약 등으로 인해  파일을 잠그고 난후 에러가 발생하거나

기타 이유로 실행이 중지되면 파일잠금을 해제하지 못하게 됩니다.


파일 잠금이 필요한 이유는..

캐쉬가 리셋되거나 만료되었을 때 그것을 가장 먼저 확인한 프로세스(또는 쓰레드)만

캐쉬를 갱신하는 작동을 하고 나머지 프로세스는 갱신이 완료될 때까지 대기했다가

완료된 후 갱신된 캐쉬를 읽어서 뿌려주도록 되어야 하는데..

이런 식으로 작동하지 못한다면.. 캐쉬가 특히 필요한 대규모 싸이트에서는

잘린 페이지가 출력되거나 오히려 과부하가 발생할 수 있습니다.


많이 알려진 캐쉬엔진에는 스마티에 내장된 캐쉬와 페어캐쉬가 있는데..

둘 다 파일잠금문제에 대한 어떠한 조치도 하지 않았으며

페어캐쉬는 캐쉬아이디의 유일성을 보장하지 못해서

확률이 적지만 엉뚱한 페이지를 출력해버릴 수 있고,

스마티는 캐쉬아이디를 전적으로 사용자가 세팅하도록 되어있습니다.


문제가 되는 부분을 배제하고, 캐쉬를 적용해볼 여지가 꽤 있게끔 만들 수는 있지만..

어쨌든 캐쉬는 무기한 보류하기로 했습니다.


못만드니까 헐뜯기성 글을 써버린 모양이 됐는데.. 아무튼..

2~3일 내에 1.7.1 이 올라가고 이 프로젝트는 마무리될 예정입니다.


-----------------

혹시 모르시는 분들을 위해..

php코드로 된 캐쉬 엔진은 잘 알려진 Zend캐쉬, PHPA, APC 등과는 종목이 다릅니다.

이들 엔진은 설치하는 것만으로 동작하며

PHP파일을 파싱한 결과물인 원시?코드를 파일 또는 메모리에 저장해서

PHP파일을 읽고 파싱하는 과정을 생략하고 원시코드를 바로 실행하도록 하는 원리이고,

페어캐쉬같은 경우는 프로그램 실행결과물.. 즉 클라이언트에 보내는 코드를 파일로 저장한 후,

같은 코드가 또 필요하다면 프로그램실행을 생략하고

저장된 코드를 읽어서 그대로 보내주는 방식으로 프록시와 비슷한 역할을 하는데..

디비연결을 생략하게될 경우 비약적인 성능향상이 있지만 적용하기가 까다롭습니다.

디비 부하문제는.. 캐쉬보다는 디비튜닝의 문제가 되는것 같습니다.
권승민 수고하셨습니다 ^^
말복인데 닭이라도 한마리 잡아 드세요 ^^
좋은 하루 되세요~
03-08-15 17:45
이준성 관리자님..정말 수고 하셨네요....
더운 날씨에 사용자를 위해 많은 수고 하셨습니다..
프로젝트가 마무리 되더라도 질문하면 답변 해 주실거죠...^^
03-08-15 22:11
관리자 많이 선선해 졌네요^^ 이런 식으로 손 떼게 됐지만.. 써비스는 계속됩니다 ^^
03-08-16 01:37
권승민 앞으로의 프로젝트 예고좀 해주세요~
03-08-16 08:44
관리자 70세에 책을 한 권 내고 80세에 그 책의 2편을..;;
03-08-16 09:31
권승민 악착같이 살아남아야 책 볼수 있겠군요 ㅜㅡ
03-08-16 09:44
관리자 ㅎㅎ
03-08-16 09:46
이준성 PHPA, APC와 같은 거중 관리자님이 보시기에 추천해 주실만한 거 있으면 좀 해주세요...^^
03-08-18 01:23
관리자 자체적으로 테스트해본적이 없어서 추천해드리거나 특별하게 제공할 데이터가 없네요.
03-08-18 02:02
    이름
비밀번호
>> [알림] 캐쉬지원불가 [9] 03-08-15 977 관리자
  [응답][알림] 캐쉬지원불가 [1] 03-08-19 909 강상욱
  [응답][응답][알림] 캐쉬지원불가 03-08-21 797 관리자
 
Since 2003-03-03 hosted on vultr.com