站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题【在线等】Tomcat服务器线程满宕机问题(跪求解决方法)

【在线等】Tomcat服务器线程满宕机问题(跪求解决方法)

摘要: 【在线等】Tomcat服务器线程满宕机问题(跪求解决方法)


我们服务器的配置情况如下
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文件,不知道是不是这个的问题。

要是确定是程序的问题就好对症下药
tomcat和MYSQL的配置问题除了设置应用 都是默认状态
我确信一点 mysql安装配置没有问题
tomcat配置可更改的地方不多
现在就是不太清楚是配置问题还是程序的问题




应该是TOMCAT的问题吧
一般来说同时有999个连接是很难得的,所以TOMCAT的线程都在使用中,
这种情况对于小小的TOMCAT服务器来说已经算是很累的
所以,如果要并发处理很多连接的话,最好还是用一些大的服务器


给你顶顶。
我觉得应该是服务器的问题。
换其他服务器进行测试看看。
tomcat换成websphere或者weblogic等



郁闷ing!


解决办法:
1,提高你程序的处理能力,减少线程的征用的数量,
估计是你一个某个有问题
A,你的程序处理能力太低,导致线程征用太快,以前的任务没有完成,新的任务又来了。
B,出现线程死锁

2,websphere 和 tomcat 没有本质差别

3,TOMCAT 的TCP/IP 接入书写的不咋样,本人改进的代码 可以同时接入
4000 个请求。
再多的话需要开辟多端口同时对外服务。


不好意思,如果有机会我有 100% 把握帮你解决这个问题。




↑返回目录
前一篇: 为什么 CSDN 不举办 编程技术大赛?
后一篇: 请问下,java能治疗神经病吗