websevice突然连接失败怎么办

前言:虽然webservice调用失败的原因已经找到并且已经解决,我还是尝试把这件事记录下来,作为一个经验保存下来。今天看到携程挂了,请先饶恕我的孤陋寡闻,知道今日我才知道携程,笑曰:小的未曾坐过灰机啊。面对这些问题时,我们能做些什么呢?

尽早9点左右时分,突然发现服务器无法正常启动了,因为我们的服务器在启动的时候是需要通过webservice访问权限的,而程序莫名其妙的就卡在webservice的通信上面,并且发生timeout后,程序就悄悄的退出了。捕捉到的日志为:

ERROR 2015-05-28 10:40:06,482 com.honzh.socket.util.ExchangeUtil: ; nested exception is:
java.net.ConnectException: Connection timed out: connect
AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode:
 faultString: java.net.ConnectException: Connection timed out: connect
 faultActor:
 faultNode:
 faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)

此时的我毫无头绪,因为之前服务器一直运行的特别正常,不曾发生过socket的连接超时,甚至从代码角度上看不曾有一点问题。这就如同今早的携程网事件、支付宝事件,我个人认为,不是数据库被删除了,不是被黑了,不是线路被挖断了,我认可这篇文章说的从携程故障回顾在线服务的黑天鹅,无论是做什么,没有100%的事情。

99.9%,服务中断时间:525.6分钟/年

99.99%,服务中断时间:52.56分钟/年

99.999%,服务中断时间:5.256分钟/年

当然了,出现这些问题,我们不是坐以待毙,我们要做的,还是要保持好心态,程序员不必认为是自己的过错,保持好心态踏踏实实的解决问题就好了,如果那些领导肆无忌惮的压迫你,只能说明他就是个pig。



回到我解决这个问题的层面上来看,我也很着急,毕竟问题发生得太没有征兆,并且让人捉摸不透。

  1. 我先来看看其他的地方可以访问这个webservice不能?

从上图可以看到,我本地就可以访问,这首先说明我的service服务没有问题,然后在我的运行服务器上再测试这个连接,就发现无法访问,那就说明问题出在服务器上。

2. 再来看看网络连接是否畅通,测试结果是畅通。

3. 再互相ping一下双方IP,发现没有丢包。

4. 运行netstat -nao,发现service的端口也没有被占用。

5. 同时告诉我通过telenet测试一下ip和端口

不通,再测试一下其他端口,发现是可以连接的,这说明端口上出现了问题。

tips:请最好不要使用默认端口!

6. 请教服务器的管理人员,他们提供的建议是修改以下内容:

虽然我并不清楚跳跃点数是做什么的?

跃点:即路由。一个路由为一个跃点。传输过程中需要经过多个网络,每个被经过的网络设备点(有能力路由的)叫做一个跃点,地址就是它的ip。跃点数是经过了多少个跃点的累加器,为了防止无用的数据包在网上流散。 为路由指定所需跃点数的整数值(范围是 1 ~ 9999),它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。

没有看得太懂。



最后, service服务选择其他的端口号。

这个我尝试了一下,发现OK。

总结:我最终的选择是修改了默认的端口号,我认为这种方式更加的让人放心。最重要的是,我想无论软件项目大小,在其领域,都会遇到类似的相对的黑天鹅事件,那么我们需要做的就是摆正好心态,放松心情来处理这件问题,但是往往做起来并没有那么容易,我就受到了很大的干扰。经历就是一种经验,相信自己。

时间: 2024-11-08 21:06:16

websevice突然连接失败怎么办的相关文章

websocket连接失败

websocket连接失败 @(markdown) 最近项目里调试websocket相关的nodejs实现的server,刚接触web开发的小伙伴们对websocket协议不熟悉,遇到问题很容易悲剧.这里只说自己理解的部分以及解决问题的经验吧. 首先,nodeserver用的socketio,于是写了个页面,用js发起websocket握手,发现一直是longpoll,猜测webserver不支持websocket协议,一查果然,haproxy设置的http反向代理.抛弃haproxy,握手成功

Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 及sql2008外围服务器

转载:Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 错误原因如下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cannot open connection at org.hibernate.exception.SQLStateConverter.convert(SQLStateConver

Java JDBC连接SQL Server2005错误:通过port 1433 连接到主机 localhost 的 TCP/IP 连接失败

错误原因例如以下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cannot open connection at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:99) at org.hibernate.exception.JDBCExceptionHelper.convert(J

com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect

问题描述:最简单的数据库连接报错,到主机  的 TCP/IP 连接失败.(win 7 操作系统) 错误信息: com.microsoft.sqlserver.jdbc.SQLServerException: 到主机  的 TCP/IP 连接失败. java.net.ConnectException: Connection refused: connect package sqlconnect; import java.sql.*; public class sqlconnect { public

【BUG & PROBLEM】mysql远程连接失败

问题描述 今天在云主机上用mysql客户端连接远程数据库,提示连接失败.提示 Host "62.183.38.xx" is not allow to connect the mysql server. Host 是我外网的IP.关闭云主机防火墙和启动mysql服务都无效. 解决方案 之后查了相关网友的资料后,找到原因,是由于mysql默认没有开启远程连接的权限.因此在mysql命令行中开启权限,问题解决! mysql > GRANT ALL PRIVILEGES ON *.* T

mysql客户端授权后连接失败问题

在本地(192.168.1.152)部署好mysql环境,授权远程客户机192.168.1.%连接本机的mysql,在iptables防火墙也已开通3306端口.如下:mysql> select host,user,password from mysql.user;+--------------+-----------------+---------------------------------------------------------+| host              | use

Mac 连接失败,因为 PPP 设置不正确 Mac OS 无密钥方式连接L2TP协议的VPN

实践是检验真理的唯一标准.起先直接照搬命令行结果出错,提示"连接失败,因为ppp设置不正确"怀疑方法不对.Google了国外的文章,结果都是一样的.后来手工打字进去就对了,妈蛋.蛋疼的事情是必须打字 终端命令如下: sudo vi /etc/ppp/options 输入: plugin L2TP.pppl2tpnoipsec 保存退出.在高级中选择通过VPN发送全部流量.

Firefox提示“安全连接失败,您收到了一个无效的证书”的解决方法

当你看到这篇文章的时候,我已经坐上轻轨准备前往某个地方游玩去了,这篇文章实际上是我昨天写好然后用wordpress的定时发布功能发布的,实际上这里大部分文章都是我事先写好然后定时发布的,特别是这个月希望能够保持每天更新一篇文章的频率,一有想法就会赶快记录下来,害怕忘记什么. 在Firefox上搭配AutoProxy/FoxyProxy和goagent穿越的时候需要导入证书,不过我在导入证书后浏览某个网站会有以下提示:(AutoProxy/FoxyProxy对该网站启用) 安全连接失败 连接 XX

解决方案—SQL Server 远程连接失败

机房收费系统异地发布的时候,需要保证数据库能够远程连接,但连接的时候通常会报错: 要解决这个问题,首先需要检查SqlServer 的几项设置.(这些设置一般都是系统默认项,不过最好看一下) (一)检查SQL Server是否允许远程链接.以SqlServer 身份验证方式登陆.登录账户sa (二)打开配置管理器,检查微软SQL服务器(MSSQLServer)的TCP/IP协议是否开启. 确保上面设置正确后,进行最后的SQL服务器防火墙设置,(问题大多出在这里) 一.可以直接关闭防火墙,但是这样不