利用ab测试工具对Tornado下使用mongodb驱动的性能简单测试分析

Blog地址:https://www.jiangdog.com/blog/tornado-motor-ab

背景

在利用Python开发web项目时,可以使用pymongomongoengine等库连接mongodb。当使用Tornado框架时,为了利用其异步的特性,还可以使用motor来作为数据库驱动。无论是mongoengine还是motor实际上应该都是对pymongo的封装。

  • mongoengine提供了ORM映射的功能,将Document封装成类,通过实例的方法来操作Document
  • motor能够和Tornado或协程配合使用,异步调用提升性能。

参考网上的文章并自己写了一些简单的代码来测试在使用Tornado框架下,这三种数据库驱动的性能。

测试工具

使用ab来做这次简单测试。

yum provides /usr/bin/ab
yum install httpd-tools

ab基本参数介绍:

  • -n 指定总共发起的请求数量。
  • -c 同时发起的请求数量,并发请求数。
  • -p 指定post方式提交的数据的文件,文件内容格式为a=1&b=2
  • -T 指定content-type

测试服务器配置及环境

服务器是利用了阿里云的基本的云服务器ECS实例:

  • 1核 1GB 带宽1Mbps
  • CentOS 7.2

mongodb和测试web服务都是安装或部署在该实例上:

  • mongodb 3.4
  • python 3.5.1
  • tornado 4.4.2
  • pymongo 3.6.0
  • mongoengine 0.15.0
  • motor 1.1

编写简单的服务端代码并利用ab进行测试

pymongo:
#!/usr/bin/python
# -*- coding:utf-8 -*-
import tornado.web
import tornado.gen
from pymongo import MongoClient
from tornado.httpserver import HTTPServer


class MessageListHandler(tornado.web.RequestHandler):

    def get(self):
        message_list = self.settings['db'].messages.find().sort([('_id', -1)]).limit(50)
        self.render('msg_list.html', message_list=message_list)


class MessageAddHandler(tornado.web.RequestHandler):

    def get(self):
        self.render('msg_add.html')

    def post(self):
        msg = self.get_argument('msg')

        res = self.settings['db'].messages.insert_one({
  'msg': msg})

        self.redirect('/message/list/')


class Application(tornado.web.Application):
    def __init__(self):
        handlers 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值