У меня сервер на Ubuntu 18 в digitalocean развернут на флешке + nginx + uwsgi.4 ядра 8 Гб оперативной памяти.Изображение загружается через форму и обрабатывается скриптом нейронной сети detect.py .Для выполнения операции требуется большой объем оперативной памяти (около 2 Гб).После каждой итерации скрипта память уменьшается.До сих пор после выполнения 5-6 сервер отключается с ошибкой из-за нехватки памяти.Журнал потребления ОЗУ такой (первая запись после перезапуска и далее после каждой итерации):
![enter image description here](https://i.stack.imgur.com/OmrBZ.png)
Состояние процесса Uwsgi и потребление памяти процессом:
![enter image description here](https://i.stack.imgur.com/tA5bo.png)
С самого начала я думал, что неправильно настроил сервер uwsgi.Я пытался добавить / изменить различные параметры, но это не помогло.Затем я проверил работу на локальном компьютере на встроенном флеш-сервере.И проблема с памятью та же!
Самое интересное, что если выполнить сценарий обработки изображения непосредственно из командной строки, проблем нет.Утечка памяти появляется только при вызове функции detect.py через сервер.
Конечная точка Flask:
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
# check if the post request has the file part
if 'file' not in request.files:
flash('No file part')
return redirect(request.url)
file = request.files['file']
# if user does not select file, browser also
# submit a empty part without filename
if file.filename == '':
flash('NO selected file')
return redirect(request.url)
if not allowed_file(file.filename):
flash("Only JPG file is used")
return redirect(request.url)
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
img = (os.path.join(app.config['UPLOAD_FOLDER'], filename))
count = detect(images=img)
return redirect(url_for("result", count=count))
#return str(count)
return render_template("index.html")
И теперь я запутался, что делатьделать дальше?И второе, возможно, в uwsgi есть настройка, которая поможет освободить память без перезагрузки сервера?