최근 WebFaction에서 Django 프로젝트 및 메모리 사용 문제가 발생했습니다.Django의 이미지를 자르면 상당한 메모리 증가가 발생합니다.
69720 4-20:20:22 13486
30404 4-20:20:22 13487
당신이 볼 수 있듯이 : 프로세스 중 하나가 실질적으로 증가 실행되는보기 후
30396 4-20:20:00 13486
30404 4-20:20:00 13487
: 여기
는 webfaction에이 프로젝트를 위해 메모리에서 실행중인 두 프로세스입니다 메모리 사용량이 두 배 이상 증가한 첫 번째 프로세스! 이 기능이 자주 사용되기 때문에 나는 무엇이 일어나고 있는지 알아낼 필요가있다. 나는 그것을 다음의보기로 좁혔다 고 믿는다 (그것은 이미지를 업로드하고, 세부 사항을 추가하고, 작은 그림을 자르는 3 단계 과정이다).다음은 아래보기입니다. 사진 객체를 가져 와서 파일에서 이미지를로드하고 사용자가 제출 한 좌표 상자를 가져온 다음 200,200 크기의 이미지를 만듭니다. 이 새로 생성 된 이미지는 파일 이름에 .thumbnail이있는 디스크에 다시 쓰여지고 사진 객체가 저장됩니다.
@login_required
def upload3(request, photo_pk):
photo = get_object_or_404(Photo, pk=photo_pk, user=request.user)
if request.method == "POST":
form = upload3Form(request.POST)
if form.is_valid():
im = Image.open(photo.image.path)
try:
box =(form.cleaned_data['x1'],form.cleaned_data['y1'],form.cleaned_data['x2'],form.cleaned_data['y2'])
except:
box = ('0','0','1000','1000')
cropped = im.crop(box)
cropped.thumbnail((200,200),Image.ANTIALIAS)
result = os.path.splitext(photo.image.path)
cropped.save(result[0] + '.thumbnail' + result[1])
photo.status = 3
photo.save()
내가 잘못했을 수있는 아이디어는 크게 감사하겠습니다.
Update 1
: 테스트에 사용 된 이미지는 모두 JPEG이며 크기는 약 3600 x 2700이며 이미지 당 약 2MB입니다.
뷰에서 메모리 사용이 증가하는 작업을 좁혔습니까? 뷰를 여러 번 호출하면 어떻게됩니까? –
아니요, 라이브 서버 (예 : pdb)에서 많은 디버깅 작업을 수행 할 수 없기 때문에 제가하지 못했습니다. 보기가 호출 될 때마다 발생하지는 않지만 대부분의 경우에 발생하는 것처럼 보입니다. (몇 주 전에 이미지 몇 장을 업로드 한 후 한 프로세스에서 메모리 사용량이 112MB 이상이었습니다). – Fernker
질문을 일반적인 이미지 크기 및 형식으로 업데이트 하시겠습니까? –