1

libcurl オブジェクトを作成し、http メッセージの送信を開始する単純なアプリを作成しました。サーバーとしてnetcatを実行しているローカルネットワーク上の別のボックスにそれらを向けます. Windowsマシンでこれらのうち200を起動します。netcat サーバーは多くの要求に応答しますが、非常に多くの要求が進行しているため、タイムアウトのためにそれらの大部分が見逃されます。

完全なソースはここにあり、実際のコードはここにあります。そこをざっと見てみると、テストアプリをどのように構築して実行するかがわかります。

数分以内にシステムが応答しなくなります。再びアクセスするには、電源ボタンを押す必要があります。ping には応答しますが、telnet、リモート デバッグ、RDP には応答しません。クラッシュ ダンプは作成されません。

ここでの本当の問題は、発生中にこれをキャッチする方法がわからないため、デバッグ方法がわからないことです。誰かがこれを診断する正しい方法を知っていることを願っています。

QoS タイプの動作を実装することで、おそらくこれを回避できます。システムを実際にロックしている原因を測定できない限り、問題を覆い隠してしまうのではないかと心配しています。

/BELOWNORMAL でプロセスを開始すると、はるかに高速に再現されるようです。

セーフ モードでは、同じマシンでこれを再現できませんでした。私のMacではこれを再現できませんでした。AV/ファイアウォールを無効にしましたが、違いはありません。ドライバーを確認しましたが、最新のようです。ハードウェア構成が異なる複数のマシンでそれを実現しました。

CPU、RAM、NPP、ポート、ハンドル、スレッドなど、チェックすべきすべてのメトリックを監視しましたが、驚くようなものは何もありません。私は 600 を起動しましたが、大きな違いはありませんでした。したがって、ハード リソース制限に達しているとは思いません。

libcurl メーリング リストに問い合わせたところ、libcurl はこれを行うべきではないと主張していますが、何が問題なのかについての意見はありませんでした。

4

0 に答える 0