tomcat拒绝访问文件连接,为什么

linux(42)
tomcat java.net.ConnectException: Connection refused
在一次配置新工程项目,修改Tomcat server.xml后,执行shutdow.sh脚本关闭服务器,提示出现如下错误:
tomcat java.net.ConnectException: Connection refused
等一大堆错误
我们 ps -ef|grep java
找到所有java进程号
kill -9 进程号
把出现的进程干掉,除了 用户名 &XXX XXX &0 20:56 pts/0 & &00:00:00 grep --color=auto java之外。
sh start.sh&
4,原因与分析
表明原因在于端口被占用等可能性,其根本在于你shutdown的时候,执行的是shutdown.sh脚本,而如果项目此时有些数据库链接之类的,以至tomcat其实根本没有真正关闭,也是就是没有完全关闭掉,导致你再次shutdown的时候报错。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3520次
排名:千里之外
原创:33篇
转载:19篇
(6)(6)(40)(1)让天下没有难学的技术
Tomcat7.0.26的连接数控制bug的问题排查
Tomcat7.0.26的连接数控制bug的问题排查
感谢同事[空蒙]的投稿。
首先感谢@烈元一起排查此问题。今天发现线上一台机器,监控一直在告警,一看是健康检查不通过,就上去查看了下,首先自己curl了下应用的url,果然是超时没有响应,那就开始按顺序排查了:
1、 load非常低,2、gc也正常,3、线程上也没死锁,4、日志一切正常。那是什么情况呢,不能忘记网络啊。果然,netstat命令一把,结果如下:
TIME_WAIT 68
CLOSE_WAIT 194
ESTABLISHED 3941
SYN_RECV 100
问题出来了,SYN_RECV竟然达到100个,正常情况下,半连接的请求应该是很小的。而且我们机器是内部的,不是lvs,不太会有半连接攻击,怎么可能达到这么大呢?
再grep SYN_RECV的连接,看到全部都是nginx在连接这台mtop机器,那接下来就dump tcp包看看了
一看一堆堆的wjas向mtop发起SYN连接请求,可是mtop机器是绝大部分没回应,只有极少的mtop机器syn+ack包。
注:wjas一天向mtop发起了近20亿的健康检查请求,够多的,所以没有外部流量时,还是有一大堆的http请求到应用上。
看系统信息,内核是2.6.32-220.23.2.ali1113.el5.x86_64的,半连接队列的长度是128不同的内核,半连接队列长度算法稍有不同,可以参考文章:。
可见是mtop半连接队列满了,不再接受新的tcp连接,导致请求没有响应了,但应用其实很空闲。
问题表现很清楚了,接下来就是各种怀疑了,因为这机器为解决之前tcnative的crash bug,刚切换成了nio模式、又昨天我手贱,在上面搞过btrace,aliperf。自己也成嫌疑,但这是半连接队列满,要么受到半连接攻击(排除,内网不太可能有半连接攻击),要么是Accept线程没有及时处理,应用没有接收连接的请求,导致三次握手后的队列连接满再引起半连接队列满了。(总结起来好像很有逻辑,排查的时候没那么明确的,还在想各种可能)
我们知道,tomcat有一个Acceptor线程,监听在端口上,在收到连接请求后,会立刻把请求交个后面线程池处理,bio是直接拿线程等待数据,nio与apr会在poller线程上注册监听,也就是select模式,底层再基于epoll事件触发(和nginx的处理模式有点区别)。那就是这个Acceptor线程难道停止了。
查看堆栈信息,果然
当前的这个acceptor已经被禁用了,需要唤醒,多次dump线程,发现此线程一直是这个状态,这就解释了为什么了。
马上查看tomcat源码,发现此代码是在tomcat的连接数(nio)达到1w的时候,会park当前线程,再请求处理后,会再唤醒,继续接受新的连接,Btrace了一把,果然这个连接数值是1w,但什么情况下,会导致这个值那么大,一直把线程暂停呢?按说如果要达到这么大的连接,我们的T4机器早就鸡飞狗跳了。
Google一把,原来是,我们使用的刚好是7.0.26.中枪了,不管是nio,bio,apr,都存在这个问题。Tomcat的代码如下:
当接受连接,出现异常时候,旧版本没有把这个数组减少,这时候就拼人品了,如果异常的请求累积,达到连接的最大值,就发生机器很闲,但tcp的连接队列与半连接队列满的情况了
tomcat在7.0.28修复了此问题,参见 。
1、如有遇到此类似情况,可看看是否这原因。
2、当最新版的jar或者容器稳定后,早点升级吧,特别是bug修复。
3、提供一次问题排查的参考。
原创文章,转载请注明: 转载自本文链接地址:
花名空蒙,阿里-无线事业部-资深开发工程师。目前负责MTOP的设计和开发工作。
Latest posts by sunqi ()
Related posts:
(3 votes, average: 3.67 out of 5)
Loading...关于tomcat拒绝访问
[问题点数:40分,结帖人boxnoodle]
关于tomcat拒绝访问
[问题点数:40分,结帖人boxnoodle]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2008年2月 总版技术专家分月排行榜第一2008年1月 总版技术专家分月排行榜第一
2008年7月 总版技术专家分月排行榜第三2008年6月 总版技术专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。5615人阅读
今天跑了几个月的项目被要求不能用ip访问,只能通过域名来访问。工信部一声号召,多少服务器托管商的电话忙碌得要死,最最苦逼的是我们这些码农啊,敲代码辛苦吧?现在还得让你干点偏活,得把ip访问限制住,而且错误页面都要指定,这也太无理取闹了吧。网上找了好久,也算是弄好了,分享一下,让大家都可以参考一下。
思维其实很简单,就是在你的虚拟主机配置两个host,一个是你注册的域名,一个是你的服务机的ip地址:
假设你现在的ip地址是:192.168.0.1,域名是:www.;需要指定的项目名在:wapapps/ranChart
那么配置tomcat的时候,就应该这样配,首先为了满足不能通过ip来指定我们的网站(貌似百度都可以,为什么工信部就不让我们小网站存活呢),最好默认的defaultHost不指定到网站的&Host:
&Engine name=&Catalina& defaultHost=&.hk&&
&Host name=&www.&
appBase=&webapps/ranChart&
unpackWARs=&true& autoDeploy=&true&
xmlValidation=&false& xmlNamespaceAware=&false&&
&Host name=&192.168.0.1&
appBase=&webapps/errorApps&
unpackWARs=&true& autoDeploy=&true&
xmlValidation=&false& xmlNamespaceAware=&false&&
默认指到其他工程,我这里是故意将defaultHost指向.hk。为什么加一个192.168.0.1的&Host 呢?这里是为了扑捉到通过在浏览器敲ip的用户,然后做自己想要的处理。本人被idc商要求要指定到一个这样的界面:
为了这一无理取闹的要求,只有配一个真实的app给它,&appBase=&webapps/errorApps& ,这是一个可用的工程,就是工程下面是一个ROOT文件夹,里面有META-INF,WEB-INF两个文件夹,在WEB-INF文件夹下面添加一个web.xml,内容为:
&?xml version=&1.0& encoding=&utf-8&?&
&web-app version=&2.5& xsi:schemaLocation=&/xml/ns/javaee /xml/ns/javaee/web-app_2_5.xsd& xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance& xmlns=&/xml/ns/javaee&&
&welcome-file-list&
&welcome-file&index.html&/welcome-file&
&/welcome-file-list&
&/web-app&
再回到ROOT文件夹下面,添加一个index.html,内容为:
&h1&Bad Request (Invalid Hostname)&/h1&
一句话,就可以了。
这样做的目的,是为了展示一个页面给用户。一个错误的请求,在谷歌浏览器上面看可以,但是在ie上看就会看到404了,所以说这个要求其实是很无理取闹的要求。
这样就可以实现限制通过ip来访问你的项目了。并且可以指定到自己想要指定的页面。
希望对大家有帮助。有不会的地方或者疑问,可以留言指出。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:71264次
排名:千里之外
原创:18篇
评论:81条
(1)(1)(1)(1)(6)(1)(3)(3)(1)}

我要回帖

更多关于 tomcat拒绝访问 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信