13

AWS マシンに ssh 転送された接続を介していくつかの残りのクエリを実行するコードがいくつかあり (fyi: これらのクエリは、このマシンで実行されている Solr サーバーにアクセスしています)、クエリは私のローカルホストに対して実行されます (AWS に転送されます)。実例)。

コードは最初は必要に応じてデータを取得するためにうまく実行されますが、しばらく実行した後、コードは失速します (Eclipse で)。

まさにこの瞬間、端末 (つまり、ssh トンネルを開始した場所) が完全にフリーズし、 String でいっぱいになります。

「受け入れます: 開いているファイルが多すぎます」

この無限出力は bash 端末に関連付けられていないため (つまり、ssh 接続がまだ有効かどうかはわかりません。また、どのシェルにいるかを示すテキストもありません... 単純で執拗な print ステートメントだけです)。それがAmazonから来ているのか、それとも私のクライアント端末から来ているのか教えてください。

この動作の原因を突き止め、端末が爆発する原因となっているマシンを特定したい

2 台のマシンのどちらがエラーの無限出力を引き起こしているかをテストするために、サーバーで ulimit コマンドを実行しました...そして、(aws サーバーで) 許可されているオープン ファイルの最大数が、クライアントプログラム(私のIDEから実行中)の実行中はいつでもファイルを開きます(これもulimitを使用して決定されます)

クライアントで同じテストを行ったところ、開いているファイルの数に大きな増加は見られませんでした。

いくつかの詳細: 短期間に 100GB を超えるデータを持つ SOLR サーバーに対して数百のクエリを実行しています。

私のsshd mac os x端末が死んでいて、このメッセージを無限に出力している理由を特定する方法に関するヒントは、私にとって非常に役立つ可能性があります. もちろん、それらが solr に固有のものであるかどうかは関係ありません。そうは言っても、solr サービスを使用するときになぜこれが発生するのかについての洞察も、この問題の解決に役立つ可能性があります。

4

5 に答える 5

18

ulimit(ターミナルタイプを介して)見てみることができます:

ulimit -a

具体的には、 の値を確認してくださいopen files。私のマシン (OS X) では 256 と報告されています。512 に増やしてみてください:

ulimit -n 512
于 2012-04-10T23:10:11.557 に答える
4

ここには確かに十分な情報はありませんがssh、転送されたソケットへの接続をローカルで受け入れようとしているときに、プロセスごとのファイル記述子の制限に達しているように聞こえます。これは、すでに開いている接続がタイムリーに閉じられていないことを示唆していますファッション。を実行ssh-dて、接続と切断の詳細を確認できます。他の多くのデバッグ情報に埋もれてしまうため、stderr をキャプチャし、スクリプトを使用してソケット操作を追跡することをお勧めします。

ssh転送されたポートでのサービス拒否攻撃を避けるために、それ自体がデフォルトを超えて開いているファイル記述子を制限する場合があることに注意してください。ドキュメントにはこれについての兆候は見られませんが、それは私が期待するようなものです。

于 2012-04-10T20:39:16.150 に答える