芹菜配置优化公式

2024-06-01 14:23:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试弄清楚芹菜,我接触到的大多数配置都是在我更新设置后进行的猜测和监控作业/性能

一些有趣的观察结果-

我继续看到redis错误ConnectionError('max number of clients reached',)。当我添加了更多的周期性任务时,就会发生这种情况。令人困惑的是,我的redis计划最多有40个连接。在我的django应用程序中,我将芹菜配置为最多允许20个redis连接。下面可以找到一些配置

CELERY_REDIS_MAX_CONNECTIONS = 20
CELERY_RESULT_EXTENDED = True   


CELERY_BROKER_TRANSPORT_OPTIONS = {
    "fanout_prefix": True,  
    "fanout_patterns": True,    
    "max_connections": 10,  
    "socket_keepalive": True,   
}

我最终升级了芹菜、Redis和芹菜节拍,并删除了上述配置。从那以后,我再也没有看到过同样的问题

celery-redbeat==0.13.0 --> celery-redbeat==1.0.0
celery==4.3.0 --> celery==4.4.4
redis==3.3.11 --> redis==3.5.3

所以在这次升级之后,我的连接错误暂时消失了。我注意到在我的redis实例中,连接的数量几乎减少了一半,从每天平均39个减少到24个

我处理的下一个错误是r14错误,我的内存超过了限制。我通过将--concurency=4设置为默认值8来解决这个问题。现在没有更多的R14了。让我困惑的是——我认为芹菜的默认设置阻止了这些问题,比如它根据处理任务的机器上的内核数量选择并发

因此,TLDR-

我有一个芹菜工人,两个队列,我知道我正在运行的周期性任务的数量和总的作业数量

有了上面的信息,我可以使用一些公式来确定诸如concurrencyredis_max_connectionsbroker_pool_limit和其他优化,这些优化会让我对当前正在做的事情进行大量猜测


Tags: redistrue数量错误作业性能connectionsmax
1条回答
网友
1楼 · 发布于 2024-06-01 14:23:23

答案很简单-不。没有公式可以用于所有芹菜配置选项的组合

此外,示例的并发设置在很大程度上取决于任务的类型。如果任务是计算密集型的,那么将并发性设置为高于CPU核数的任何值都没有意义。如果不是,那么您甚至可以乘以10,这取决于您的任务使用了多少CPU

Redis max connections和broker pool limit也一样-除了默认值,您几乎不需要其他任何东西,但是,如果您有数百个工作进程(而不是工作进程),那么您可能会遇到连接问题,因此您实际上可能需要调整这些数字

相关问题 更多 >