4

jetty サーバーと ehcache インスタンスを開始しましたが、すぐに別の java プロセスを開始すると、Linux でスレッド制限に遭遇しました。

エラーメッセージはunable to create new native thread(PS My linux OS is CentOS 6.2)でした。

それからps -xH、2 つの Java プロセス (jetty と ehcache) がほぼ 800 のスレッドを生成し、その総数ps -xHは 1023 であり、ulimit -u1024 を示していることを以前は知っていました。

だから、私の質問は、なぜ Java がスレッドを生成するのに、プロセス数の制限に遭遇したのかということです。

PS私は十分なメモリを持っています

4

2 に答える 2

3

Linux スレッドの場合、プロセスは基本的に同じものです。それらの違いは、スレッドはメモリやファイル記述子などを共有し、プロセスは共有しないことです。

より詳細な洞察については、これを確認してください。したがって、スレッドとプロセスの両方が、1023 プロセスの制限に対してカウントされます。

おそらく、作成するスレッドの数を減らすようにする必要があります。

于 2012-11-27T10:23:31.590 に答える
0

これは、少なくとも Jetty にとっては、はるかに過剰な量のスレッドです。毎秒数百のリクエストでサーバーに負荷をかけない限り、これは発生しないはずです。スレッドが無期限にブロックされていないことを再確認してください。いずれの場合も、要求をキューに入れるか拒否する前に許可されるスレッドの最大数を構成します。

于 2012-11-27T10:22:30.510 に答える