I will try and provide a better explanation of why solving it is hard later,
but if I change:
slowhttptest -c 6 -B -i 10 -r 200 -s 8192 -t POST -u
"https://localhost:8080/test" -x 10 -p 3
to:
slowhttptest -c 6 -B -i 10 -r 200 -s 8192 -t POST -u
"http://localhost:8080/test" -x 10 -p 3
Ie., non HTTPS, since mod_wsgi-express is only accepting HTTP, then I don't see
any immediate response being logged in the access log.
mod_wsgi-express start-server app.py --port 8080 --body-timeout 62
--log-to-terminal --access-log
Other than that, the behaviour I see is as I would expect.
Graham
> On 11 Dec 2017, at 5:06 am, Cristiano Coelho <[email protected]> wrote:
>
> Update: Here's a small wsgi test script, tested with a fresh apache mod_wsgi
> installation (through pip).
>
> The same issue can be easily replicated, and it seems that the only way to
> improve it is with the request timeout values (header and body), which sadly
> needs to be high when using AWS due to how the load balancer works (keeping
> open connections to the apache server to improve loading time).
>
> The same issue happens with another server like gunicorn, which they clearly
> state on their docs it's an issue that WILL happen unless the reverse proxy
> (nginx) is properly set up. Now for Apache + mod_wsgi, I would expect that
> apache is the reverse proxy (even if there's a load balancer before it) and
> it should help with the issue just like nginx and gunicorn, or even IIS +
> asp.net
>
>
> from flask import Flask, request, jsonify
>
> # pip install Flask
>
> # Testing flask
> # export FLASK_APP=app.py
> # flask run
>
>
> # Testing mod_wsgi
> # pip install mod_wsgi (and apache2 + apache2-dev before this if it's not
> installed)
> # Create user wsgi or change user
> # sudo -u wsgi mod_wsgi-express start-server app.py --port 8080
> --body-timeout 62
> # Set --body-timeout to simulate AWS setup
>
> # Interesting settings
> # --connect-timeout defaults to 15s
> # --queue-timeout defaults to 30s
> # --body-timeout defaults to 15s
>
>
> # Test slowloris:
> # apt-get install slowhttptest
> # 6 or a value > configured worked threads*processes
> # slowhttptest -c 6 -B -i 10 -r 200 -s 8192 -t POST -u
> "https://localhost:8080/test" -x 10 -p 3
> # Note that GET also works in which case the request should be pretty much
> ignored since it's an unsupported method
>
>
> app = Flask(__name__)
> application = app # For mod_wsgi
>
>
> @app.route('/test', methods=['POST'])
> def test():
>
> data = request.get_json(silent=True) or request.form
>
> if not data:
> r = jsonify({
> 'out': '',
> 'err': 'No data provided'
> })
>
> r.status_code = 400
>
> else:
> r = jsonify({
> 'out': data,
> 'err': None
> })
>
> r.status_code = 200
>
> return r
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "modwsgi" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected]
> <mailto:[email protected]>.
> To post to this group, send email to [email protected]
> <mailto:[email protected]>.
> Visit this group at https://groups.google.com/group/modwsgi
> <https://groups.google.com/group/modwsgi>.
> For more options, visit https://groups.google.com/d/optout
> <https://groups.google.com/d/optout>.
--
You received this message because you are subscribed to the Google Groups
"modwsgi" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/modwsgi.
For more options, visit https://groups.google.com/d/optout.