Apache2에서 WSGI 프로세스로 실행되는 상당히 간단한 Python Flask 응용 프로그램을 사용하고 있습니다. 응용 프로그램은 SQLAlchemy를 사용하여 DB에서 몇 줄의 데이터를 검색하여 JSON으로 다시 전송합니다.Flask WSGI 응용 프로그램 메모리가 부족합니다.
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>
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:[email protected]/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)
누구든지 내가 뭔가를 놓친 경우 말 또는 I가 충전되는 것을 볼 수있는 방법을 예를 들어, 나에게 문제에 메모리 사용량을 촬영하는 방법에 대한 몇 가지 도움말을 제공 할 수 있습니다 아파치 2 프로세스?
도움 주셔서 감사합니다.
[Flask-SQLAlchemy] (http://packages.python.org/Flask-SQLAlchemy/)를 사용하는 대신 sqlalchemy를 직접 처리하는 이유가 있습니까? – ThiefMaster
나는 그 하나를 놓쳤다, 팁에 감사드립니다! – StefanE
@ThiefMaster 그건 내 문제를 실제로 해결했습니다! 초당 250 건의 요청과 1.5 % 이상의 RAM 사용량이 아닙니다. 당신이 글을 쓰면 답을 해줘서 기쁩니다! – StefanE