Я использую сервер Tornado с приложением Python Flask. По каждому запросу анализируется целая куча данных и выводятся результаты. Однако через несколько дней оперативная память (50 ГБ) заполняется. Не уверен, почему это происходит.
Дело в том, что как только запрос получен, Tornado порождает новый процесс, который выполняет анализ, доставляет вывод и затем умирает. Или он будет анализировать данные в том же процессе, и переменные, созданные во время него, будут продолжать скрываться даже после того, как ответ будет доставлен. Если это последнее, это может объяснить заполнение ОЗУ. Мой код:
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from app import app
if __name__ == '__main__':
app.debug=True
http_server = HTTPServer(WSGIContainer(app))
http_server.listen(5000)
IOLoop.instance().start()
Спасибо!
РЕДАКТИРОВАТЬ:
верхний вывод:
top
? - person onur güngör   schedule 28.03.2015java
, а неpython
. Так что ваша проблема, вероятно, не связана с Tornado. - person onur güngör   schedule 28.03.2015mem
? Почему%mem
и virt не совпадают? - person huhahihi   schedule 28.03.2015virt
сразу становится 32 г, однако используемая сверху память составляет всего пару ГБ. Но со временем количество используемой памяти продолжает расти, ноvirt
в Java остается на уровне 32 г, а%mem
на уровне ~ 9%. - person huhahihi   schedule 28.03.2015