在用 Python 编写我自己的 RPC 方法时,我在 MacOS X (10.9.1) 上发现了一些尴尬的行为。我像这样启动 Python 的简单 HTTP 服务器:
python -m SimpleHTTPServer
然后我启动 Apache 的 HTTP 基准测试工具:
ab -n 20000 http://127.0.0.1:8000/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 127.0.0.1 (be patient) Completed 2000 requests Completed 4000 requests Completed 6000 requests Completed 8000 requests Completed 10000 requests Completed 12000 requests Completed 14000 requests Completed 16000 requests apr_socket_recv: Operation timed out (60) Total of 16343 requests completed
就是这样......即使运行“ab -n 1000 ...”17次也会在最后一次运行中产生相同的结果。在基于 Ubuntu 的系统上做同样的事情。
版本是:
Python 2.7.5 Darwin box 13.1.0 Darwin Kernel Version 13.1.0: Thu Jan 16 19:40:37 PST 2014; root:xnu-2422.90.20~2/RELEASE_X86_64 x86_64
有谁知道为什么 MacOS X 上的 Python 不能处理超过 16.000 个请求,以及是否有可能的解决方法?
谢谢