希望有人能够帮助解决这个问题。
简短版本:我正在寻找用 Python 构建自己的网站压力测试器。
为什么?因为我喜欢它 :) 我不是在寻找预先构建的解决方案 [即 funkload 或 JMeter]。作为编程练习,这似乎是一件有趣的事情。我还认为,学习如何做我想做的事在以后的其他情况下可能会很有用。
我要它做什么?随着时间的推移,我打算让它变得更复杂,但我的第一个目标很简单:在尽可能短的时间内发出尽可能多的请求。我正在拍摄每秒 300-500 个请求。
我尝试了许多不同的方法。最有前途的两个是:
- 产生线程。其中很多。让每个线程发出一个请求。这被证明是最快的[每个线程每秒可以轻松地接近 1 个请求 - 500 个线程意味着每秒几乎 500 个请求],但是它似乎对计算机来说非常密集。在我看来,在 Python 中生成数百个线程所占用的内存和计算量令人望而却步。我觉得必须有一个更优雅的解决方案。
- 使用 Python 的 asyncore 库。我一直在搞这个,它似乎真的很酷,但我很快就结束了。如果我收到大约 140 个字节的请求,那么它每秒能够抛出 >1000 个请求 [太棒了!],但我需要它能够处理响应相当大的请求 [即 100kb - 500kb]。引入更大的响应大小意味着它每秒限制大约 10-50 个请求 [如果我幸运的话]。
有没有人有任何想法或建议?如果我能以某种方式获得响应的大小而无需实际读取它,那将是完美的。我只想知道我实际上得到了正确的字节数。数据是什么并不重要。
或者,如果这不是 Python 中的一个选项,那么老实说,我愿意尝试任何人必须提出的任何建议。我玩过 Twister,但没有达到比我已经看到的线程更高的速度。
无论如何 - 任何帮助都会很棒。谢谢!