2011-02-18 2 views
5

APC 캐시가 가득 차면 Apache가 중단됩니다. 아파치는 요청에 응답하지만 APC 캐시가 일부 리소스를 확보하기를 영원히 기다린다. 그러나 결코 일어나지 않을 것이다.PHP APC 캐시가 완전히 차면 아파치가 멈추는 것을 방지하는 방법은 무엇입니까?

APC에서 만료 된 항목을 삭제하는 내 자신의 작은 삭제 스크립트로 10 분마다 CRON 작업을 실행합니다. 좋아, 나는 APC에 더 많은 메모리를 추가 할 수 있고 그리고/또는 나는 expunge 스크립트를 더 자주 실행할 수 있었다. 그러나 그것은 실제 해결책이 아니며, 나는 문제를 다루는 새로운 방법을 찾고 있습니다.

답변

1

실제로 최종 해결책은 아니지만 제 질문에 제안한 작은 PHP APC expunge script을 작성했습니다. 이 스크립트는 10 분마다 CRON에 의해 ​​실행되며 수동으로 만료 된 항목을 제거합니다. 그것은 완벽하지는 않지만 적어도 많은 도움이됩니다.

아직 최종 해결책을 찾고 있습니다.

0

캐시에 거의 가득 차 있는지 확인하기 위해 자주 실행되는 스크립트에 줄을 추가 할 수 있습니다. 그렇다면 처리하십시오. 이러한 스크립트의 예는 데이터베이스에 대한 연결을 설정하는 스크립트 일 수 있습니다.

+0

글쎄, 모든 스크립트 호출에서 그런 스크립트를 실행하면 각 스크립트의 응답 시간이 약간 느려질 것입니다. 대부분의 경우 캐시 사용은 최소 수준이므로 절대 필요하지 않습니다. 그래서 저는 cron job이 더 자주 실행될 것이라고 말합니다. 5 분이라고 말합니다. 그러나 나는 여전히 더 우아한 방법을 선호합니다. 아파치가 뭔가를 잘못 인식하고 스스로를 다시 시작하는 것처럼 ....하지만이 가능한 기능에 대해서는 아무 것도 발견하지 못했습니다. ... – Frodik

1

캐시가 가득 차면 ttl을 설정하면 APC의 동작이 변경된다는 것을 알게되었습니다. 기본적으로 ttl이 0 인 경우 APC는 캐시가 가득 찰 때 캐시를 비워야합니다. 수동에서 : TTL는, APC 것 0보다 큰 경우 TTL이, 그렇지 않으면 0으로 동일한 경우

사용 가능한 메모리 부족 캐시의 경우에, 캐시는 완전히 말소 될 것입니다 만료 된 항목 을 삭제하려고 시도하십시오.

+0

글쎄,하지만 이것은별로 일어나지 않습니다. APC 캐시가 완전히 차면 아파치가 멈 춥니 다. 새로운 연결을 수락하지만 완료되지는 않습니다. 만료 된 항목이 많지만 APC는 항목을 삭제하지 않습니다 (논리적으로해야 함). 그리고 ttl이 0 이상인지는 중요하지 않습니다. – Frodik

관련 문제