我有一个作为 http-server 的 python 脚本:http: //paste2.org/p/89701,当它针对 ApacheBench (ab) 进行基准测试时,并发级别(-c 开关)低于或等于该值我在源代码中的 socket.listen()-call 中指定了一切正常,但是一旦将 apache bench 中的并发级别置于 socket.listen()-call 中的值之上,性能就会下降,例如:
- socket.listen( 10 ) 和 ab -n 50 -c 10 http://localhost/ = 1200req/s
- socket.listen( 10 ) 和 ab -n 50 -c 11 http://localhost/ = 40req/s
- socket.listen( 100 ) 和 ab -n 5000 -c 100 http://localhost/ = 1000req/s
- socket.listen( 100 ) 和 ab -n 5000 -c 101 http://localhost/ = 32req/s
两次调用之间的代码没有任何变化,我不知道出了什么问题——这个问题已经有一天了。另请注意:无论 socket.listen() 设置为什么或 apache 中的并发(-c 开关)设置为什么,相同代码的多路复用版本(我编写以与线程版本进行比较)都可以正常工作。
我在 IRC/python 文档上花了一天时间,在 comp.lang.python 和我的博客上发布 - 我找不到任何人甚至知道可能出了什么问题。帮我!