Comparación de prueba de rendimiento de matraz, Tornado y Japronto

Realice una prueba sencilla con el marco web Flask, Tornado y Japronto

Entorno de prueba, máquina virtual Ubuntu16.04 CPU de 4 núcleos 8G de memoria

Ver la configuración del servidor

root@localhost:/home/frog/test# uname -a
Linux localhost 4.4.0-87-generic #110-Ubuntu SMP Tue Jul 18 12:55:35 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

root@localhost:/home/frog/test# cat /proc/cpuinfo | grep model\ name
model name	: Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
model name	: Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
model name	: Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
model name	: Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
root@localhost:/home/frog/test#

root@localhost:/home/frog/test# cat /proc/meminfo | grep MemTotal
MemTotal:        8175012 kB

La prueba de presión utiliza el   software wrk (la dirección del proyecto es  https://github.com/wg/wrk ), que es un software de prueba de presión que puede generar cargas muy altas en una máquina con CPU de varios núcleos y adopta un diseño de subprocesos múltiples .
Primero usamos 10  subprocesos y 10000  conexiones para probar durante  30  s

1, matraz

Secuencia de comandos del servidor: flask_test.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run(host='0.0.0.0',port=8881)

Resultados de la prueba

root@localhost:/home/frog# wrk -t10 -c10000 -d30s --latency "http://192.168.3.81:8881"
Running 30s test @ http://192.168.3.81:8881
  10 threads and 10000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   353.26ms  285.36ms   1.91s    85.11%
    Req/Sec    60.07     72.79   565.00     90.04%
  Latency Distribution
     50%  224.33ms
     75%  597.30ms
     90%  666.42ms
     99%    1.69s 
  7360 requests in 30.10s, 1.17MB read
  Socket errors: connect 0, read 113, write 0, timeout 451
Requests/sec:    244.55
Transfer/sec:     39.64KB
root@localhost:/home/frog#

2, Tornado

Script del servidor: tornado_test.py

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8882)
    tornado.ioloop.IOLoop.current().start()

Resultados de la prueba

root@localhost:/home/frog# wrk -t10 -c10000 -d30s --latency "http://192.168.3.81:8882"
Running 30s test @ http://192.168.3.81:8882
  10 threads and 10000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.16s   436.92ms   2.00s    69.59%
    Req/Sec   131.43    174.27     1.11k    86.81%
  Latency Distribution
     50%    1.04s 
     75%    1.53s 
     90%    1.86s 
     99%    1.99s 
  24406 requests in 30.09s, 4.82MB read
  Socket errors: connect 0, read 0, write 0, timeout 7901
Requests/sec:    811.07
Transfer/sec:    163.96KB
root@localhost:/home/frog#

3, listo

Script del servidor: japronto_test.py

from japronto import Application

def hello(request):
	return request.Response(text='Hello world')

app = Application()
app.router.add_route('/', hello)
app.run(debug=True,port=8808)

Resultados de la prueba

root@localhost:/home/frog# wrk -t10 -c10000 -d30s --latency "http://192.168.3.81:8808"
Running 30s test @ http://192.168.3.81:8808
  10 threads and 10000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   458.47ms  189.77ms   2.00s    64.91%
    Req/Sec     1.62k     1.46k    8.39k    72.49%
  Latency Distribution
     50%  438.24ms
     75%  589.58ms
     90%  708.52ms
     99%  889.29ms
  362614 requests in 30.10s, 31.47MB read
  Socket errors: connect 0, read 0, write 0, timeout 1572
Requests/sec:  12047.43
Transfer/sec:      1.05MB
root@localhost:/home/frog#

para resumir

De los resultados,

Resultados comparativos
marco Número de solicitudes por segundo (solicitudes / seg)
matraz 244,55
tornado 811.07
ya listo 12047.43

Obviamente, el rendimiento de las solicitudes por segundo de Japronto es mucho más alto que los otros dos.

 

Supongo que te gusta

Origin blog.csdn.net/u014108439/article/details/89317236
Recomendado
Clasificación