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