【在线等】关于tomcat最大线程数满导致服务停止

hawkingadmin
06-08-17 1 5616

我们服务器的配置情况如下
P4 3.6
内存 1G
硬盘 SCSI 140 G 分区情况 /boot(500M) /SWAP (2048M) /(剩余全部磁盘空间)
服务器是新的HP全新配置
服务器的WEB配置情况:红旗LINUX5.0服务亚洲版+TOMCAT5.5.17+MYSQL5.0.22+JDK1.5.0.6
TOMCAT和 MYSQL以及JD的安配置过程我就不说了

现在的问题是:开发组十几个人点击,频繁刷新(遨游浏览器有个自动刷新的功能^_^,我们每台机器开了网站上15个左右窗口,设置成每隔10秒自动刷新),结果不到十分钟就TOMCAT就宕机了
终端显示错误如下:

严重:All threads (150) are currently busy, waiting. Increase maxThreads (150) or check the servlet status


程序是用的hibernate + spring

Connector port="80"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />

我试图把maxThreads改为999

Connector port="80"
maxThreads="999" minSpareThreads="25" maxSpareThreads="999"
enableLookups="false" redirectPort="8443" acceptCount="999"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />

再测试 ,十多分钟后问题依旧 报错如下:
严重:All threads (999) are currently busy, waiting. Increase maxThreads (999) or check the servlet status
这个已经最大了 web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。也就是说maxThreads最大连接数,不能高于一千。

并且我在catalina.sh中配置了JAVA_OPTS='-Xms256m -Xmx512m'最大内存




MYSQL的配置文件 /etc/my.cnf

# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 384M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
back_log = 500
max_connections = 1024
default-character-set = gb2312
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout


问题 :大家看是什么问题,是TOMCAT的配置问题,还是MYSQL的问题
还是程序的问题,我们好象是用的tomcat自己带的数据库连接池,没有用到
MYSQL官方网站上的连接池的jar文件,不知道是不是这个的问题。




banq
2006-08-21 10:07

内存泄漏是Spring+Hibernate架构最容易导致的问题。

与你的程序细节设计有关,底层所起作用不大,使用Jmeter+Profiler工具寻找内存泄漏地方。