z4y*_*4ts 5 python profiling celery django-celery
正如我在top实用程序中看到的celery那样,消耗了大量的CPU时间.所以我想描述一下.
我可以在开发者机器上手动完成,如下所示:
python -m cProfile -o test-`date +%Y-%m-%d-%T`.prof ./manage.py celeryd -B
Run Code Online (Sandbox Code Playgroud)
但是为了获得准确的时间,我需要在生产机器上对其进行分析.在那台机器上(Fedora 14)芹菜由init脚本启动.例如
service celeryd start
Run Code Online (Sandbox Code Playgroud)
我发现这些脚本最终最终会调用manage.py celeryd_multi.所以我的问题是如何通过celeryd_multi启用分析来启动芹菜?在我的情况下,这意味着添加-m cProfile -o out.prof选项python.
任何帮助深表感谢.
And*_*son 13
我认为你混淆了两个不同的问题.您可能正在处理太多单个任务,或者单个任务可能效率低下.
您可能知道这些问题中的哪一个,但是您的问题并不清楚它是什么.
要跟踪正在处理的任务数量,我建议您查看celerymon.如果某个特定任务更频繁地出现,那么您可以调查它的调用位置.
分析整个芹菜可能没什么用,因为你会得到许多你无法控制的代码.正如您所说,这也意味着您在生产中运行它时遇到问题.我建议您考虑将分析代码直接添加到任务定义中.
您可以cProfile.run('func()')在celery和代码之间使用间接层,以便分析任务的每次运行.如果您生成一个唯一的文件名并将其作为第二个参数传递给run您,您将拥有一个完整的配置文件数据目录,您可以逐个任务地检查,或使用pstats.add将多个任务运行组合在一起.
最后,每任务分析意味着您还可以使用项目代码中的设置全局或按任务打开或关闭分析,而不需要修改服务器上的init脚本.
| 归档时间: |
|
| 查看次数: |
4385 次 |
| 最近记录: |