压测:celey backend为rabbitmq pk redis

使用celery的backend异步获取结果,本文使用rabbitmq 和 redis分别作为backend,代码对比如下

from celery import Celery, platforms
import time
import os
from datetime import datetime

app = Celery(‘proj‘,
             broker=‘amqp://admin:[email protected]:5672‘,     //rabbitmq
             backend=‘amqp://admin:[email protected]:5672‘,    //redis
             //backend=‘redis://ip:10013/0‘,
             include=[‘tasks‘]
             )
app.conf.update(
    CELERYD_PREFETCH_MULTIPLIER=1,
    CELERY_ACKS_LAT = True,
)

@app.task
def fun_1(n):
    return {"task_id": "0a14c9ac91de419880c4499a8f57418e",
            "status": 0,
            "desc": str(n) }

@app.task
def chk_total_callback(tasks_rets):
    end_time = datetime.now()
    print "end_time", end_time
    return 0

if __name__ == "__main__":
    app.start()

发送消息

from tasks import *
from celery import group, chain
from datetime import datetime
import time                                                            

#job_group = group([fun_1.s(i) for i in range(30000)])
beg_time = datetime.now()
for j in range(8000):
    job_group = group([fun_1.s(i) for i in range(20)])
    chain(job_group, chk_total_callback.s())()
    #time.sleep(0.25)                                                  

print "beg_time:", beg_time

压测场景一:

注:1000*20:一次发送1000次,分片20


力度


backend


耗时


内存峰值


均值


1000*20


rabbitmq


18:40:36-18:41:21


0.504G


45ms


redis


18:48:37-18:51:21


11.84M


82ms


2000*20


rabbitmq


21:57:06 -21:58:41


1.008G


47.5ms


redis


18:58:52-19:04:10


20.26M


159ms


3000*20


rabbitmq


21:51:40-21:54:03


1.512G


47.6ms


redis


19:43:31-19:51:41


28.18M


163ms


4000*20


rabbitmq


20:59:12-21:02:28


2.268G


49ms


redis


20:00:00-20:10:52


37.10M


163ms

压测场景二:

500*20: 500次,每次间隔1s,分片20


力度


backend


耗时


内存峰值


耗时


500*20


rabbitmq


22:34:28-22:43:01


0.504G


513s


redis


22:49:23-22:57:56


7.63M


513s

压测场景三:

8000 * 0.25 = 2000s, 任务数:8000   8000 * 20 + 8000 = 8000 * 21=168000 * 2=336000


力度


backend


耗时


内存峰值


耗时


8000 * 0.25 = 2000s

*20


rabbitmq


10:51:38-11:28:06


1.26G


2188s


redis


11:56:17-12:33:00


65.96M


2203s


16000 * 0.25 = 4000s

*20


rabbitmq


18:26:39-19:39:37


4.28G


73*60=4380


redis


20:13:57-22:49:33


130.69M


9360s

时间: 2024-10-24 16:26:38

压测:celey backend为rabbitmq pk redis的相关文章

压箱底的干货!干货!——Redis面试系列(一)

一.什么是 Redis?Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库,可以存储键和五种不同类型的值之间的映射.键的类型只能为字符串,值支持五种数据类型:字符串.列表.集合.散列表.有序集合. 与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB.另外

Docker+JMeter+InfluxDB+Grafana从容器内部发起压测

1.自由定制JMeter镜像: Dockerfile文件: FROM java:8# 基础镜像 MAINTAINER yangjianliang <[email protected]># 作者 ENV http_proxy ""ENV https_proxy "" RUN mkdir /test && \ chmod -R 777 /test# 创建/test目录,用于存放jmx脚本.jtl结果文件.html测试报告文件 ENV JMET

性能压测诡异的Requests/second 响应刺尖问题

最近一段时间都在忙着转java项目最后的冲刺,前期的coding翻代码.debug.fixbug都逐渐收尾,进入上线前的性能压测. 虽然不是大促前的性能压测要求,但是为了安全起见,需要摸个底心里有个数. 毕竟这次转java的服务都是集团核心公共服务(主要是订单域服务).(等我们顺利上线了,我再来好好总结下其中的坎坷和壮举.) 废话不多说了,直接进入主题. 由于这次压测主要重点是关注正向的两个核心订单服务,下单服务.查单服务.查单服务初步压测下来问题不大,主要是db的索引和cache的问题. 下单

关于springmvc的hello world的压测报告

都说hello world 很简单,应该能承受很大的请求压力,那么到底有多大?你知道吗?如果知道,那咱们就不继续了.如果不知道,我们来看一下! 1. 准备工作,快速建立一个基于springmvc的helloworld 1.1. 在pom.xml引入spring必须的包级日志组件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/PO

记5.28大促压测的性能优化&mdash;线程池相关问题

目录: 1.环境介绍 2.症状 3.诊断 4.结论 5.解决 6.对比java实现 废话就不多说了,本文分享下博主在5.28大促压测期间解决的一个性能问题,觉得这个还是比较有意思的,值得总结拿出来分享下. 博主所服务的部门是作为公共业务平台,公共业务平台支持上层所有业务系统(2C.UGC.直播等).平台中核心之一的就是订单域相关服务,下单服务.查单服务.支付回调服务,当然结算页暂时还是我们负责,结算页负责承上启下进行下单.结算.跳支付中心.每次业务方进行大促期间平台都要进行一次常规压测,做到心里

记5.28大促压测的性能优化—线程池相关问题

目录: 1.环境介绍 2.症状 3.诊断 4.结论 5.解决 6.对比java实现 废话就不多说了,本文分享下博主在5.28大促压测期间解决的一个性能问题,觉得这个还是比较有意思的,值得总结拿出来分享下. 博主所服务的部门是作为公共业务平台,公共业务平台支持上层所有业务系统(2C.UGC.直播等).平台中核心之一的就是订单域相关服务,下单服务.查单服务.支付回调服务,当然结算页暂时还是我们负责,结算页负责承上启下进行下单.结算.跳支付中心.每次业务方进行大促期间平台都要进行一次常规压测,做到心里

日新进用户200W+,解密《龙之谷》手游背后的压测故事

2017年3月,腾讯正式于全平台上线了<龙之谷>手游,次日冲到了App Store畅销排行第二的位置,并维持到了现在.上线当日百度指数超过40万,微信游戏平台数据显示预约数780多万,而据内部人员透露当日新进用户200W+,这就是<龙之谷>手游在安卓平台上所取得的成绩. 较高的市场期待让腾讯测试团队对<龙之谷>手游的测试倾尽全力,面对"经典IP"和盛大游戏一贯口碑,腾讯测试团队对游戏服务器进行了严格的压力测试,上线后服务器稳定的表现也证明了测试团队的

【原】shell编写一个简单的jmeter自动化压测脚本

在公司做压力测试也挺长时间了,每次测试前环境数据准备都需要话费较长时间,所以一直在考虑能不能将整个过程实现自动化进行,于是就抽空写了一个自动化脚本,当然这个脚本目前功能十分简陋,代码也不完善,很有很多需要改的地方,后续再优化.文中如有错误或者不妥之处,还望指教. 一.设计思路 1.初始化数据库(导入用户,清除数据等) 2.初始化缓存(使用了redis缓存优化系统) 3.执行压力测试 二.目录结构 目录解读: apache-jmeter-3.0 为jmeter程序目录 asserts.log 断言

python之路day11【RabbitMQ、Redis、Mysql】

大纲 1.RabbitMQ 2.Redis 3.Mysql 1.RabbitMQ消息队列 1.1 RabbitMQ简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然. AMQP的主要特征是面向消息.队列.路由(包括点对点和发布/订阅).可靠性.安全. RabbitMQ是一个开源的AMQP实现,服务器端用Erlan