压测: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:admin@ip:5672', //rabbitmq
backend='amqp://admin:admin@ip:5672', //redis
//backend='redis://ip:10013/0',
include=['tasks']
)
app.conf.update(
CELERYD_PREFETCH_MULTIPLIER=,
CELERY_ACKS_LAT = True,
) @app.task
def fun_1(n):
return {"task_id": "0a14c9ac91de419880c4499a8f57418e",
"status": ,
"desc": str(n) } @app.task
def chk_total_callback(tasks_rets):
end_time = datetime.now()
print "end_time", end_time
return 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()])
beg_time = datetime.now()
for j in range():
job_group = group([fun_1.s(i) for i in range()])
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 |
压测:celey backend为rabbitmq pk redis的更多相关文章
- 用压测模拟并发、并发处理(synchronized,redis分布式锁)
使用工具:Apache an 测压命令: ab -n 100 -c 100 http://www.baidu.com -n代表模拟100个请求,-c代表模拟100个并发,相当于100个人同时访问 ab ...
- 压测过程中出现ops断崖式下跌原因及排解
压测机器: 100台docker redis集群:16个分片 在开始压测的半个小时中,一直很稳定,ops稳定在20w左右.但是接下来突然ops断崖式下跌,ops降到了3w以下.然后持续一段时间,直至变 ...
- Docker+JMeter+InfluxDB+Grafana从容器内部发起压测
1.自由定制JMeter镜像: Dockerfile文件: FROM java:8# 基础镜像 MAINTAINER yangjianliang <526861348@qq.com># 作 ...
- 压测过程中,获取不到redis连接池,发现redis连接数高
说明:图片截得比较大,浏览器放大倍数看即可(涉及到隐私,打了码,请见谅,如果有疑问,欢迎骚扰). 最近在压测过程中,出现获取不到redis连接池的问题 xshell连接redis服务器,查看连接数,发 ...
- Lumen框架使用Redis与框架Cache压测比较
使用命令 ab -c 20000 -n 100000 'http://127.0.0.1:9050/v1/api.store.xxx'进行压测,并同时进行了交叉测试,结果如下: 高并发情况下数据目前没 ...
- 压测应用服务对RabbitMQ消息的消费能力--实践脚本
最近运维跟我反馈我负责的应用服务线上监控到消费RabbitMQ消息队列过慢,目前只有20左右,监控平台会有消息积压的告警. 开发修改了一版应用服务的版本,提交给我做压测验证. 之前没有做过消息中间件的 ...
- Redis自带压测工具(redis-benchmark.exe)
redis做压测: 可以用自带的redis-benchmark工具,使用简单 压测命令:redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 10000 压测需要 ...
- 性能压测诡异的Requests/second 响应刺尖问题
最近一段时间都在忙着转java项目最后的冲刺,前期的coding翻代码.debug.fixbug都逐渐收尾,进入上线前的性能压测. 虽然不是大促前的性能压测要求,但是为了安全起见,需要摸个底心里有个数 ...
- 关于springmvc的helloworld的压测报告
都说hello world 很简单,应该能承受很大的请求压力,那么到底有多大?你知道吗?如果知道,那咱们就不继续了.如果不知道,我们来看一下! 1. 准备工作,快速建立一个基于springmvc的he ...
随机推荐
- 1、从C语言到C++
1.面向对象的C++ c++是在C语言的基础上发展起来的一门语言,C++是即支持结构化程序编程又支持面向对象程序设计的混合型语言.他一方面提供了对C的兼容性,保持了C的简介.高效,接近汇编语言的特点, ...
- poj 3258 3273
poj3258 题目 (最大化最小值)(最小值最大化) 题意:牛要到河对岸,在与河岸垂直的一条线上,河中有N块石头,给定河岸宽度L,以及每一块石头离牛所在河岸的距离,现在去掉M块石头,要求去掉M块石 ...
- flume遇到的问题
Caused by: java.lang.IllegalStateException: Unable to add FlumeEventPointer [fileID=, offset=]. Queu ...
- HDU 4893 线段树的 点更新 区间求和
Wow! Such Sequence! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- 使用JAVA API 解析ORC File
使用JAVA API 解析ORC File orc File 的解析过程中,使用FileInputFormat的getSplits(conf, 1)函数, 然后使用 RecordReaderreade ...
- websevice动态控制访问ip
一般而言webservice是部署在哪台服务器,然后它的address location就是指向哪个,但是由于有些情况处于各种原因,如网络策略,需要先访问某个ip之后再进行跳转到一个ip,这个时候就需 ...
- golang简单实现jwt验证(beego、xorm、jwt)
程序目录结构 简单实现,用户登录后返回一个jwt的token,下次请求带上token请求用户信息接口并返回信息. app.conf文件内容(可以用个beego直接读取里面的内容)写的是一个jwt的se ...
- Ef-Code-First 使用实体类映射出数据库
最近面试时很多面试官都问到了EF框架 好记性不如烂笔头 赶紧记下来 code-first是EF框架中的一种,是使用实体类来进行数据库表的映射,所以实体类中的字段要规范(我认为) 比如: 如果有外键的话 ...
- MVC 5使用ViewData(模型)显示数据
看过此篇<MVC 5使用ViewData(对象)显示数据>http://www.cnblogs.com/insus/p/3377178.html 都明白在控制器使用ViewData(obj ...
- openvSwitch tunnel
ovs tunnel 实验拓扑 实验拓扑搭建基础脚本 #vbox虚拟机1 ip netns add left ip link add name veth1 type veth peer name sw ...