由于过往的各种条件限制,如数据库性能不够、PaaS 平台功能不足、对特定领域的问题理解不充分,线上的服务一定会有很多妥协解决方案。这些问题不会让服务彻底不可用,但一定会困扰团队,容易让人担忧系统的可靠性。特别是提供 toB 服务而言可靠性与准确性是一样重要的。
Posts for: #Profiling
近期做测试和采样的一些记录
这阵子做的工作主要和性能优化有关,之前的一篇谈了如何获得采样数据,这里保存一些测试和采样的记录。
对 Flask 应用做采样分析
在 Python3.7 环境下,Uber 开源的 PyFlame 无法使用,而在容器环境中,py-spy 又有诡异的问题。考量各种「采样」工具后,发现只有内置的 cProfile 才是稳定、可靠的。
但是对于复杂的 Flask App,大量使用 cProfile 执行采样非常不方便。本文将给出一个在
Python3.7 的容器环境下经测试可以正常工作的例子。原理是在 app
初始化后,添加
werkzeug ProfilerMiddleware(也许可以翻译成采样中间件)。