2010-07-20 6 views
2

db genrate 웹 페이지에서 100,000 개의 행을 가져온 다음 모든 작은 객체 (목록, 튜플 및 딕트)를 릴리스하는 장기 실행 프로세스가 있습니다. 창에서 각 요청 후 메모리가 해제됩니다. Howerver, 리눅스에서 서버의 메모리는 계속 증가하고 있습니다.메모리가 python에 의해 배포되지 않았습니다. Linux의 cherrypy 응용 프로그램

다음 게시물은 문제의 원인과 가능한 해결 방법에 대해 설명합니다.

http://pushingtheweb.com/2010/06/python-and-tcmalloc/

tcmalloc를 사용하여 내 자신의 파이썬 버전을 컴파일 할 필요없이이 문제를 해결 얻을 수있는 다른 방법이 있습니까. 이 옵션은 파이썬이 sys 관리자에 의해 제어되므로 매우 어렵습니다.

+0

이 파이썬의 독립의 glibc의 "기능"이다 너무 많이 성능에 영향을주지 않는 것을 확인해야합니다. Windows allocator는 다른 방식으로 작동하므로 다른 동작을합니다. –

답변

0

sysadmin이 시스템 파이썬을 대체하도록 시도하는 대신 자신의 작업 디렉토리에서 파이썬을 컴파일 할 수 있습니다.

먼저 당신은 tcmalloc 솔루션은 문제를 해결하고 당신의 응용 프로그램

+0

내 사용법이 매우 일반적이며 고유하지 않다고 생각합니다. 기존의 파이썬 할당자를 사용하여 메모리를 OS로 다시 확보 할 수있는 방법이 있어야합니다. – Sad

+1

@Sad, 링크에 설명 된 문제가 귀하의 문제와 동일한 지 확인해야합니다. 메모리가 OS로 되돌려지지 않을 수도 있지만 적어도 후속 요청에 사용되도록 인터프리터 내에서 해제되어야합니다. 메모리가 커지고 성장하는 것을보고 있다면 아마도 문제가 달라질 것입니다. –

+0

이것이 동일한 문제인 것으로 확인되었습니다. 파이썬에서 사용할 수있는 여러 가지 메모리 프로파일 링 옵션을 사용했지만 메모리 누수를 찾을 수는 없지만 프로그램의 메모리 크기는 계속 커지고 있습니다. 또한 메모리는 인터프리터 내에서 재사용 될 수 있으며 문제는 Linux에만 국한됩니다. 그 모든 것들이 내 사용법이 원래의 게시물과 동일하다는 사실 (많은 수의 물체를 할당 함)과 결합되어 모든 것을 풀어 주면 내 문제가 게시물에 설명 된 것과 동일하다는 것을 매우 편안하게 느낄 수 있습니다. – Sad

관련 문제