【问题标题】:MITMProxy poor performanceMITMProxy 性能不佳
【发布时间】:2013-06-11 15:37:30
【问题描述】:

我们发现在 Python 中使用 MITMProxy 时性能非常差。我们使用requests Python 库自定义转发请求。

我们的程序使用 MITMProxy 上的脚本模式根据来自客户端的请求创建自定义请求,然后返回响应。因此,基本上,对于向代理发出的每个请求,都会使用requests 构建一个新的请求对象,然后转发并返回。

使用 MITMProxy 转发请求时如何提高性能?

【问题讨论】:

  • 如果不知道您现在获得的性能以及您期望的性能,这很难回答。此外,您似乎暗示性能问题出在 MITMProxy 中。你做了什么来确认这一点(例如,尝试了一个具有已知高性能的最小负载生成器来排除你的代码或你正在使用的库的缓慢)。
  • 这里的“性能”衡量标准是什么(我猜是响应时间)? MITMProxy 并非旨在提供高性能解决方案。事实上,继续阅读 MITMProxy 的工作原理 (mitmproxy.org/doc/howmitmproxy.html),您就会发现为什么期望 MITMProxy 提供高性能是不公平的。 MITMProxy 可以在内部发出多个请求(特别是针对 https 流量),您似乎在此之上添加了另一个请求对象层。

标签: python http networking proxy request


【解决方案1】:

我前段时间和 Juan 解决了这个问题,但最近收到了类似的问题,让我把解决方案留在这里以供参考:

mitmproxy 有一个单一的流原语,所以当内联脚本正在处理某些事情时,其他请求会阻塞。可以使用 libmproxy.script.concurrent 装饰器线程运行脚本。更多详情,请查看docs。

(完全披露:我创作了此功能)

【讨论】:

  • 文档说:请注意,这通常会打开竞争条件的大门,并在不需要时降低性能。
猜你喜欢
  • 2011-01-03
  • 2016-11-06
  • 2019-06-15
  • 2010-12-31
  • 2012-01-25
  • 2021-12-15
  • 2011-02-13
  • 2011-01-14
  • 2016-12-24
相关资源
最近更新 更多