2014-03-28 2 views
1

Eclipse Kepler SR2에서 실행되는 Google App Engine v.1.9.1, Java 버전을 사용하고 있습니다. 나는 JDK 1.7을 가지고있다. 내 logging.properties는 java.util.logging.ConsoleHandler에만 로그를 보내고 있습니다.Google AppEngine의 LogService에서 OutOfMemoryError

[편집] Eclipse에서 실행되는 개발 서버 [/ 편집]는 다른 서버에서 많은 데이터를 수신하여 데이터베이스에 덤프합니다. 이렇게하면 많은 로그가 생성됩니다. 단 몇 시간 만 지나면 OutOfMemoryError가 발생합니다.

저는 JProfiler를 실행했고 주변에 보관중인 객체가 com.google.apphosting.api.logservice.LogServicePb$LogLine 인 것으로 파악했습니다. 어쨌든 이것은 수백만 가지 사례를 기억에 남김없이 버려지지 않고 있습니다.

확실히 데이터 기록량을 줄일 수 있지만 문제가 지연됩니다.

로그 라인을 비우는 방법을 도처에서 살펴 보았지만 이에 대한 설정을 찾을 수 없습니다. 사용할 수있는 유일한 옵션은 Java가 아닌 Python입니다.

이 문제의 원인과 해결 방법을 알려주세요.

+0

개발 서버는 생산로드를 처리하도록 설계되지 않았습니다. 제작 과정에서 같은 오류가 발생 했습니까? –

+0

@PeterKnego 방금 개발을 시작했습니다. 프로덕션 서버가 아직 없습니다. 문제의 "로드"는 시간당 1 분 동안 실행되며 약 200 개의 데이터베이스 쿼리 만 있습니다. 이것은 큰 짐과는 거리가 멀다. 예. 로그 문이 많이 있지만 왜 메모리에서 버려지지 않았습니까? 로그 기록을 줄이면 며칠 동안 만 문제가 지연되어 다시 충돌합니다. – Emmanuel

+1

개발 서버는 응용 프로그램에서 요구하는 "프로덕션 품질"을 제공하지 않습니다. 제한된 테스트를위한 프로덕션 클라우드 환경의 작은 하위 집합입니다. 온라인으로 애플리케이션 ID를 생성하고, 애플리케이션을 배포하고, 최소 24 시간 동안 해당 애플리케이션의 로깅 활동 및 메모리 사용을 모니터링하십시오. 배포 된 서버에 메모리가 누출되면 큰 [보고 할 버그]가 있습니다 (https://code.google.com/p/googleappengine/issues/list?can=2&q=Type%3DDefect). 로컬 개발 환경에서만 메모리 누수가 발생하면보고 할 버그가 있습니다. –

답변

0

@Martin Berends가 말했듯이 Eclipse 내의 개발 서버는 개발 용입니다. 로그 문은 해당 환경의 메모리에 저장되어있는 것으로 보입니다. 일단 앱을 테스트 서버로 옮기면 메모리 사용량이 평탄 해 보입니다.

그래서 결론은; 개발 환경에서 실행하는 경우 로깅 양을 줄이고 잠시 후 서버를 다시 시작하여 OutOfMemoryError을 피하십시오. 둘째, 실제 테스트 서버에서 테스트를 수행하십시오.

관련 문제