2010-12-12 3 views
2

현재 약 30 개의 엔티티가 들어있는 종류가 MyUsers(db.Model) 인 데이터 스토어가 있습니다. 다음 코드 사용 '(#'문자에 의해 구분) 화면에 "name"속성 '모든 엔티티를 출력하는 스크립트를 작성했습니다 : 스크립트는 잘 작동기본 소프트 키 메모리 제한 초과

def get(self): 
    q_1 = MyUsers.all().order('name') 
    for user in q_1: 
     self.response.out.write(user.name) 
     self.response.out.write("#") 

을하지만, 문제를 1 개 요청

총 서비스 후 220.043 MB와

12-12 오전 12시 45분 22.691

초과 부드러운 메모리 제한 : 난 항상 애플 리케이션 엔진 로그에 중요한 메시지를 얻을 수 있다는 것입니다

나는 12:45 AM 22.691

이 요청 12-12 에 새로운 프로세스가 응용 프로그램에 대한 시작 발생하고, 따라서 에 응용 프로그램 코드가 처음으로로드 할 수 일으켰습니다. 따라서이 요청은 응용 프로그램 의 일반적인 요청보다 더 많은 CPU를 사용하고 더 많은 CPU를 사용할 수 있습니다. 12-12 오전 12시 45분 22.691

W는이 요청을 처리 한 후,이 요청을 처리 한 프로세스 가 너무 많은 메모리를 사용하는 것으로하고 종료시켰다. 이것은 일 가능성이 높으므로 응용 프로그램에 다음 요청을 요청할 때 새 프로세스가 사용됩니다. 이 메시지가 자주 표시되면 응용 프로그램에서 메모리 누수가있을 수 있습니다.

메모리 제한을 초과해서는 안되는 매우 간단한 작업 인 것처럼 보이므로 어떻게 개선 할 수 있습니까?

감사합니다,

조엘


편집 :

from models.model import * 
from google.appengine.ext import webapp 
from google.appengine.ext.webapp.util import run_wsgi_app 
import profiler.appengine.request 
import profiler.appengine.datastore 

내가 시도하고 이해하는 프로파일 러를 사용 :

수입에 관해서는, 내가 사용하는 수입은

무엇이 잘못 되었나요? 아마도 도움을 줄 수 있습니다. Debug from profiler

감사!

조엘


편집 2

이 코드 (필자는 프로파일 러를 수입하기 전에 문제가 내가 시도 일어난 후 사용 및 디버그, 또한 발생)의 전체 버전입니다 다음 MyUsers에 관해서는

from models.model import MyUsers 
from google.appengine.ext import webapp 
from google.appengine.ext.webapp.util import run_wsgi_app 
import profiler.appengine.request 
import profiler.appengine.datastore 

class PrintAll(webapp.RequestHandler): 

    def get(self): 
     q_1 = MyUsers.all().order('name') 
     for user in q_1: 
      self.response.out.write(user.name) 
      self.response.out.write("#") 

application = webapp.WSGIApplication(
            [('/print', PrintAll) 
             ], 
            debug=True) 

def main(): 

    profiler.appengine.request.activate() 
    profiler.appengine.datastore.activate() 

    run_wsgi_app(application) 

    profiler.appengine.request.show_summary() 
    profiler.appengine.datastore.show_summary() 
    profiler.appengine.datastore.dump_requests() # optional 

if __name__ == "__main__": 
    main() 

() 모델 클래스 :

class MyUsers(db.Model): 
    user = db.UserProperty() 
    points = db.FloatProperty() 
    bonus = db.FloatProperty(default=0.0) 
    joindate = db.DateTimeProperty(auto_now_add=True) 
    lastEntry=db.DateTimeProperty(auto_now_add=True) 
    name=db.StringProperty() 
    last_name = db.StringProperty() 
    homepage = db.StringProperty() 
    hobbies = db.ListProperty(str) 
    other = db.StringProperty() 
    calculate1 = db.FloatProperty() 
    calculate2 = db.FloatProperty() 
    calculate3= db.IntegerProperty(default=0) 
    history = db.ListProperty(str) 
    history2 = db.ListProperty(str) 
    title = db.IntegerProperty(default=0) 
    title_string = db.StringProperty() 
    updateDate = db.DateTimeProperty(auto_now_add=True) 
    level=db.IntegerProperty(default=0) 
    debug_helper=db.IntegerProperty(default=0) 
    debug_list=db.ListProperty(str) 
+1

설정에 대한 자세한 정보를 제공해 주실 수 있습니까? 아마 모델 defs, 당신의 수입 등 .... –

+0

첨부 된 프로파일 러 결과를 참조하십시오 – Joel

답변

1

실제로이 오류로 인해보고있는 오류가 발생할 수있는 방법이 없습니다. 완전한 복제 사례를 제공 할 수 있습니까? 포함 된 코드 스 니펫 이외의 다른 것이이 문제의 원인 일 가능성이 큽니다.

+0

가져 오기 및 프로파일 러 출력으로 질문을 편집했습니다. 감사! – Joel

+0

@Joel 대용량의 메모리를 사용하는 것을 가져 오는 것 같습니다. 어떤 프레임 워크를 사용하고 있습니까? 모델 모듈에는 무엇이 있습니까? –

+0

webapp 프레임 워크를 사용하고 있습니다. 전체 코드와 내가 가져 오는 모델 클래스 (MyUsers)로 질문을 다시 편집했습니다. – Joel