- PR -

スレッド数の上限の設定について

1
投稿者投稿内容
たかすぃ
会議室デビュー日: 2003/06/05
投稿数: 14
投稿日時: 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の設定で対処できればと考えています。

ご教授の程、宜しくお願いします。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2005-05-13 22:19
Javaはぜんぜん知りませんが...
引用:

たかすぃさんの書き込み (2005-05-13 19:24) より:
java.lang.OutOfMemoryError: unable to create new native thread


というのはJVMのメモリ不足でわ?
システム側のリソース不足とか制限とかじゃなさそうに見えるです。
たかすぃ
会議室デビュー日: 2003/06/05
投稿数: 14
投稿日時: 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を使用しています。

ですので、カーネルパラメータの設定ではと思った次第です。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2005-05-14 00:01
にゃるほど。

/proc/sys/kernel/threads-max はシステムで動作させられる
最大のプロセス数ですが、Linux のスレッドは1:1モデルなので
これはそのまま最大のスレッド数に一致します。

512MBで1万4千個ものプロセスが動いてるのか?と考えると
イマイチしっくりきませんが...
# 無理とはいいませんし、プログラムによってはそれでも
# たっぷり余裕があるくらいですが

あと、そこのページにも書いてありますがスレッドが起動できない
というのはメモリを使い切ってる場合にも起こります。
# 「メモリ」というと正確さに欠けるかな
1

スキルアップ/キャリアアップ(JOB@IT)