2012-04-10 4 views
2

Google에서는 GAE/J 애플리케이션에 sessions을 사용하고 있습니다. 주말에는 수많은 _AH_SESSION 엔티티 (약 1 초당 약 100 ~ 200 개)가 생성되어 데이터 저장소에 쓰기가 많이 발생했습니다. 우리가 알 수 있듯이 큐를 제거 할 때 멈추었 기 때문에 불량 작업 큐가 생성되었습니다. 작업은 매시간 실행되는 mapper 프로세스의 일부였습니다.특정 요청에 대해 AppEngine (Java) 세션을 끕니다.

매시간마다 매퍼 (또는 실제로 우리의 작업 대기열 또는 cron 작업 또는 다른 많은 요청)에 세션이 필요하지 않습니다. 선택한 URL에 대한 세션을 만들지 못하게하는 방법이 있습니까?

답변

3

불행히도 그럴 수 없습니다.

모든 요청이 데이터베이스에 새로운 _ah_SESSION 엔티티를 생성하는 브라우저가 아닌 클라이언트 (REST 또는 mapreduce 작업을 통한 기기)가있을 때 특히 불쾌합니다.

이 문제를 피하는 유일한 방법은 고유 한 세션 처리기를 작성하는 것입니다. 쿠키를 설정/확인하고 특정 경로를 무시하도록 쿠키를 설정하는 서블릿 필터.

편집 :

난 그냥 다른 방법이있을 수 있다는 것을 깨달았다 확인 클라이언트 (맵리 듀스 작업을) 할 적당한 이름을 가진 더미 쿠키를 설정합니다. GAE는 프로덕션에서는 ACSID이고 dev 서버에서는 dev_appserver_login이라는 쿠키를 사용합니다. 항상 동일한 쿠키 값을 사용하면 모든 요청이 하나의 사용자/세션으로 처리됩니다.

세션 개체를 조회/저장하는 데 여전히 오버 헤드가 있지만 적어도엔티티는 생성되지 않습니다.

+0

고맙습니다. 우리는 커스텀 핸들러와 함께 갈 것입니다. –

관련 문제