1

多くのファイル記述子を割り当てて Out-of-File-Descriptor エラーを発生させることにより、システムを (たとえば 15 分間) ダウンさせることに興味があります。(心配しないでください。私は何かをハッキングしようとしているわけではありません。これは、私が書いているサービスをテストするためのものです...他のプログラムの誤動作の下でどのように動作するかを確認するためです。)そのためのベストプラクティスはありますか? 無限 for ループで fopen() と言い続けるべきですか? そして、15分後にプロセスを強制終了できますか? 誰もこれを経験していますか?

更新: Linux を実行しており、作成中のプログラムにはスーパー ユーザー権限があります。

ありがとう、ヨギ

4

5 に答える 5

2

プログラムを実行する前に、 setrlimit RLIMIT_NOFILEを使用してファイル記述子の制限を下げることを検討しましたか?

これは、アプリケーションをテストするのと同じシェルで、 bash ulimit が組み込まれている場合に簡単に実行できます。例:-n

 ulimit -n 32

また、すでに実行されている他の多くのサービスを混乱させることはありません。その制限を下げると、アプリケーション(同じシェルで実行)がすぐに(テスト目的で)傷つくことになります。

システム全体のレベルでは、/proc/sys/fs/file-maxたとえば次のように書き込むこともできます。

echo 1024 > /proc/sys/fs/file-max
于 2012-06-06T05:10:02.523 に答える
0

私の2セント:

1.多くのファイル記述子を作成するプログラムを作成します。次のいずれかの方法で実現できます。

(a)コード内のさまざまなファイルを
開く(b)ソケット記述子をたくさん開く

(c)たくさんのスレッドを作成する

2.ここで、シェルスクリプトなどを使用して、ステップ1で作成したプログラムの複数のインスタンスを生成し続けます(つまり、複数のプロセスを作成します)。

注: Linuxおよび他のほとんどのオペレーティングシステムでは、プロセスごとのファイル記述子の数に制限があります(Linuxではデフォルトで1024です。ulimit-aを使用して確認できます)。したがって、これを行うと、プロセスは失敗します。ファイル記述子の使用数を増やすだけでシステムをダウンさせることができるかどうかは、本当によくわかりません。

于 2012-06-06T04:27:03.473 に答える
0

mkstempを使用して、一時ファイルのファイル記述子を取得できます。

于 2012-06-06T07:08:35.513 に答える
0

OS の実装に依存しますが、同じプロセスから同じファイルに対して fopen を呼び出すと、新しいファイルの説明は割り当てられず、参照カウンターがインクリメントされるだけです。

ストレステストについて何か読むことをお勧めします

ここにいくつかの使用可能なソフトウェアがあります (OS プラットフォームにタグを付けません):

http://www.opensourcetesting.org/performance.php

于 2012-06-06T04:04:24.867 に答える
0

通常の使用で一度発生しました。Linuxでinodeを実行していると思います。ファイルを開くだけのより速い方法はわかりません。ただ気をつけてください、私たちはシステムをロックしました。少し前のことなので、何がファイルを開こうとしたのかは覚えていませんが、通常、ファイル ハンドルを取得できると想定されており、取得できない場合は適切に動作しません。〜ベン

于 2012-06-06T04:04:37.997 に答える