web-dev-qa-db-ja.com

node.jsサーバー上のApachebenchが、約30回のリクエスト後に「apr_poll:指定されたタイムアウトが期限切れになりました(70007)」を返します

Node.jsを使い始めたばかりですが、abを使用して実験的な負荷テストを行うと、約30リクエストでエラーが返されます。

次のような、私よりもはるかに優れた同時実行数を示す他のページを見つけました: http://zgadzaj.com/benchmarking-nodejs-basic-performance-tests-against-Apache-php

これらの数値を達成するために行う必要のある重要なサーバー構成設定はありますか?

私は一番上にメモリを見てきましたが、abを実行している間、まだかなりの量の空きメモリがあり、mongostatも見ていますが、疑わしいものは何も見られません。

私が実行しているコマンドで、エラーは次のとおりです。

ab -k -n 100 -c 10 postrockandbeyond.com/
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> Apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 2006 The Apache Software Foundation, http://www.Apache.org/

Benchmarking postrockandbeyond.com (be patient)...apr_poll: The timeout specified has   expired (70007)
Total of 32 requests completed

誰かが私がこれを引き起こしているかもしれないことを調べるべきことについて何か提案がありますか? osx lionで実行していますが、サーバーでも同じコマンドを実行しても同じ結果が得られます。

編集:私は最終的にこの問題を解決しました。 WebSocketを介してturntable.fmに接続していたTTAPIを使用していました。ホームページでは、リクエストごとに接続していました。つまり、特定の数の接続の後、すべてが崩壊するということでした。同じ問題が発生している場合は、リクエストごとに外部サービスにアクセスしているかどうかを確認してください。

2
Scott

このブログ投稿 によると、これはApacheベンチがHTTP/1.0リクエスト。これにより、ノード0.6以降でノードが接続を閉じます。

理由はわかりません。ノードのバグのようなもののようです。

とにかく、簡単な答えは何か他のものを使うことです。私は httperf を使用してきましたが、とにかく良いようです。

3
Cole