У меня есть довольно простое приложение на Python Flask, работающее как процесс WSGI под Apache2.
У приложения есть прослушиватель, использующий SQLAlchemy для извлечения нескольких строк данных из БД и отправки их обратно в виде JSON
Для соединения MySql у меня есть один глобальный движок, который используется повторно.
Используя JMeter для генерирования некоторой нагрузки, процесс Apache2 увеличивает использование ОЗУ на 0,5% за каждые 5 секунд и очень быстро исчерпывает ОЗУ. При остановке JMeter, генерирующей нагрузку, память не очищается.
httpd.conf
<VirtualHost *:80>
ServerName xxxxxxxxxx.com
<Directory /var/www/xxxxxxxxxx>
Order allow,deny
Allow from all
</Directory>
WSGIDaemonProcess BiddingPractice user=www-data group=www-data threads=5
WSGIScriptAlias /flask /var/www/xxxxxxxx/xxxxxxxxxxx.wsgi
<Directory /var/www/BiddingPractice>
WSGIProcessGroup BiddingPractice
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
Файл WSGI
import sys
sys.path.insert(0, '/home/stefan/Code/xxxxxx')
from BiddingPractice import app as application
_ init.py _
# -*- coding: utf-8 *-*
from flask import Flask
from sqlalchemy import *
app = Flask(__name__)
db = create_engine('mysql://root:xxxxxx@localhost/xxxxxxx')
import BiddingPractice.main
main.py
# -*- coding: utf-8 *-*
from flask import render_template
from flask import request
from flask import make_response
from flask import jsonify
from BiddingPractice import app, db
from Data.users import getUsers
import random
@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
return render_template('temp.html', name=name)
@app.route('/getData')
def getData():
un, psw, gids = getUsers()
random.shuffle(un)
random.shuffle(gids)
usernames = ','.join(map(str, un))
passwords = ','.join(map(str, psw))
guids = ','.join(map(str, gids))
return jsonify(usernames=usernames, passwords=passwords, guids=guids)
Кто-нибудь может сказать, пропустил ли я что-то, или дать несколько советов о том, как решить проблему с использованием памяти, например, как я могу увидеть, что заполняет процесс Apache2?
Спасибо за любую помощь!