如何提高芹菜对rabbitmq的消息率?

时间:2019-04-08 06:32:26

标签: python rabbitmq celery

我正在尝试使用celery和rabbitmq每分钟调用近1万个REST API请求。但是,发布速度太慢,几乎达到100 / s。当我将请求减少到每分钟近1000个请求时,其发布速度高达400 / s。

增加工作人员,将工作人员的交付方式更改为暂时的,增加并发性(使用事件变量作为池),将任务划分为使用不同的队列并没有很大地影响公共比率。仅减少任务数就可以显着提高发布率。

如何增加rabbitmq的发布率?还有什么应该尝试的?

我正在使用celery版本4.2.2,rabbitmq版本3.6.10。 AWS EC2 t2.large(vCPU = 2,8GB RAM)实例用于数据库(mongodb),消息队列(rabbitmq)和管理(rabbitmq admin和flower) AWS EC2 t2.micro(vCPU = 1,1GB RAM)实例用于工作服务器

celery.py中的配置

CELERY_USERNAME = get_env_variable('CELERY_USER')
CELERY_PASSWORD = get_env_variable('CELERY_PASSWORD', is_password=True)
CELERY_HOSTNAME = get_env_variable('CELERY_HOST')
CELERY_VHOST = get_env_variable('CELERY_VHOST')
CELERY_BROKER = 'amqp://%s:%s@%s/%s' % (CELERY_USERNAME, CELERY_PASSWORD, CELERY_HOSTNAME, CELERY_VHOST)

app = Celery('scheduler',
             broker=CELERY_BROKER,
             broker_pool_limit=10,
             include=['scheduler.tasks'],
             )

用于运行工作程序的命令

celery -A scheduler worker -l info -c 50 -P eventlet --prefetch-multiplier 10

当我尝试每分钟1k个请求时

1k requests rabbitmqadmin

最后两个支柱是相关结果

1k requests flower

当我尝试每分钟发送1万个请求时

10k requests rabbitmqadmin

10k requests flower

-编辑-

我为每个任务记录了一些日志,发现celery beat Scheduler缓慢发送任务。有什么办法可以提高这个比率?

0 个答案:

没有答案