我们编写了一个应用程序,向我们客户的超过200,000个客户通过电子邮件发送账单信息。
目前,我们使用的批处理程序需要超过2天的时间以顺序方式发送所有电子邮件。
我们已经将整个程序转移到Celery上,并且在常规2个工作者负载下已经看到了一些显着的改进。
有人对Celery进行过基准测试吗?
文档指出,性能需要将worker数量等于CPU数量。假设我们在物理8核服务器上虚拟化服务器并设置32个vCPUs,那么我们可以以32个线程并发运行吗?
这些邮件是通过不同的邮件服务器发送的,该服务器仅运行Rabbit MQ、Celery和应用程序。
请建议正确的worker数量、线程数量和vCPU数量,以避免不必要的排队和延迟。
谢谢!
目前,我们使用的批处理程序需要超过2天的时间以顺序方式发送所有电子邮件。
我们已经将整个程序转移到Celery上,并且在常规2个工作者负载下已经看到了一些显着的改进。
有人对Celery进行过基准测试吗?
文档指出,性能需要将worker数量等于CPU数量。假设我们在物理8核服务器上虚拟化服务器并设置32个vCPUs,那么我们可以以32个线程并发运行吗?
这些邮件是通过不同的邮件服务器发送的,该服务器仅运行Rabbit MQ、Celery和应用程序。
请建议正确的worker数量、线程数量和vCPU数量,以避免不必要的排队和延迟。
谢谢!
celery worker -l info -P gevent -c 1000
。如果您有32个CPU,则可以使用celery multi来充分利用它们:celery multi start 32 -P eventlet -c 100
,每个进程有32个工作线程,并发数为100。 - asksol