Tôi đang tải lên hình ảnh (< 10MB) cho một trình xử lý đơn giản (bên dưới) để trình bày vấn đề này. Sau khi phân phát ~ 5 yêu cầu trên một phiên bản F1 (128MB ram) tôi chạy vượt quá giới hạn bộ nhớ: "Đã vượt quá giới hạn bộ nhớ riêng tư với 152.414 MB sau khi hoàn thành 6 yêu cầu"Tải lên và gán tập tin của App Engine vào các lỗi gây ra lỗi sử dụng bộ nhớ sau khi cung cấp các yêu cầu X
Trên bản F2 (256MB ram) có được một vài yêu cầu nhiều hơn, nhưng không nhiều: "Vượt quá giới hạn bộ nhớ tin mềm với 258,156 MB sau khi phục vụ 19 yêu cầu tổng"
Ví dụ mã:
import webapp2
class FileUploader(webapp2.RequestHandler):
def post(self):
test = self.request.get('file')
self.response.out.write('hi')
app = webapp2.WSGIApplication([('/leak-uploader-example', FileUploader)],
debug=True)
các văn bản trong các bản ghi cho thấy ứng dụng của tôi có thể có rò rỉ bộ nhớ. Có vẻ như vấn đề có thể là do thu thập rác của Python hoặc App Engine sau khi yêu cầu hoàn tất. Bất kỳ đề xuất nào về cách giữ cho các trường hợp của tôi không bị chấm dứt sau một vài yêu cầu?
cập nhật - Tôi nhìn thấy những hành vi tương tự sử dụng framework ứng dụng web (thay vì webapp2): "Vượt quá giới hạn bộ nhớ tin mềm với 143,121 MB sau khi phục vụ 6 yêu cầu tổng"
Đây có phải là mã chính xác bạn đang sử dụng không? Tôi nghiêm túc nghi ngờ đó là một vấn đề đặc hữu với appengine. Nếu không nhiều người sẽ gặp vấn đề. Tôi có thể tải lên hình ảnh cả ngày và không hết bộ nhớ (mặc dù tôi không sử dụng webapp2) nhưng quá trình xử lý của tôi phức tạp hơn nhiều so với ví dụ của bạn. –
Mã đúng, chính xác để tạo lại điều này. Chỉ cần truy cập vào tệp đã tải lên là đủ để gây rò rỉ bộ nhớ. Tôi đã thực hiện chuyển đổi hình ảnh và tải lên Google Cloud Storage ban đầu nhưng tôi đã xóa nó xuống mức tối thiểu mà vẫn có vấn đề. Tôi đã thử một webapp và thấy cùng một hành vi (mã webapp được thêm ở trên). Bạn tải tệp lên trình xử lý của mình nhanh đến mức nào? Các tệp lớn đến mức nào? – robertfischer
Tôi không đề xuất không sử dụng webapp2. Thêm rằng trải nghiệm của tôi không dựa trên webapp2 vì lợi ích của việc tiết lộ đầy đủ. Tôi cũng không sử dụng webapp. Tất cả công việc của tôi thường là kim tự tháp và/hoặc bobo. –