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 を超えるリクエストを処理できない理由と、可能な回避策があるかどうかを知っている人はいますか?
ありがとう