- - PR -
スレッド数の上限の設定について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-05-13 19:24
環境は
redhat ES ver3 jdk1.4.2 tomcat5.0.28 apache1.3です。 javaサーブレットを動かしていると、 javaが以下のエラーをはきます。 java.lang.OutOfMemoryError: unable to create new native thread 新しいスレッドが作れないという理由だと思いますが、 これを回避するためには何処の設定を変えればよいでしょうか? /proc/sys/kernel/threads-maxでよいでしょうか? (/proc/sys/kernel/threads-maxは14336です) プログラムを改修するには時間がかかるため、 redhatの設定で対処できればと考えています。 ご教授の程、宜しくお願いします。 | ||||
|
投稿日時: 2005-05-13 22:19
Javaはぜんぜん知りませんが...
というのはJVMのメモリ不足でわ? システム側のリソース不足とか制限とかじゃなさそうに見えるです。 | ||||
|
投稿日時: 2005-05-13 23:05
ぽんす様 返信ありがとうございます。
HP-UXの場合だと、 java.lang.OutOfMemoryErrorだけであればjava側のメモリ不足なのですが java.lang.OutOfMemoryError: unable to create new native threadとなると カーネルパラメータのmax_thread_proc の値が必要量より小さい場合にでるそうです。 参考: http://h50146.www5.hp.com/products/software/development/java/tips/tune/p24.html topで見た限りでは、javaの-Xmxまでは余裕がありました。 メモリーは2G積んでまして、javaで512mを使用しています。 ですので、カーネルパラメータの設定ではと思った次第です。 | ||||
|
投稿日時: 2005-05-14 00:01
にゃるほど。
/proc/sys/kernel/threads-max はシステムで動作させられる 最大のプロセス数ですが、Linux のスレッドは1:1モデルなので これはそのまま最大のスレッド数に一致します。 512MBで1万4千個ものプロセスが動いてるのか?と考えると イマイチしっくりきませんが... # 無理とはいいませんし、プログラムによってはそれでも # たっぷり余裕があるくらいですが あと、そこのページにも書いてありますがスレッドが起動できない というのはメモリを使い切ってる場合にも起こります。 # 「メモリ」というと正確さに欠けるかな |
1