Flask WSGI应用程序内存不足

Ste*_*anE 1 python apache sqlalchemy flask

我有一个相当简单的python Flask应用程序在Apache2下作为WSGI进程运行.应用程序有一个监听器,使用SQLAlchemy从数据库中检索几行数据并将其作为JSON发送回来

对于MySql连接,我确实有一个全局引擎被重用.

使用JMeter生成一些负载,Apache2进程每5秒就将RAM使用量增加0.5%,并且很快就会耗尽RAM.如果停止生成负载的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>
Run Code Online (Sandbox Code Playgroud)

WSGI文件

import sys
sys.path.insert(0, '/home/stefan/Code/xxxxxx')
from BiddingPractice import app as application
Run Code Online (Sandbox Code Playgroud)

_ 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
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

任何人都可以判断我是否遗漏了某些内容,或者给我一些关于如何解决内存使用问题的提示,例如我怎样才能看到填充Apache2进程的内容?

谢谢你的帮助!

Thi*_*ter 5

使用Flask-SQLAlchemy.它需要妥善处理连接和清理物品.

除此之外,它给你很多糖,Modelclass.query而不是db.session.query(Modelclass)