`
ruyi574812039
  • 浏览: 43439 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

别让防火墙阻塞了数据库连接

阅读更多
  转自:http://www.360doc.com/content/08/0524/18/49194_1281450.shtml

在我进行的技术支持的项目中,有不少情况下,防火墙的设置会给J2EE应用带来一些麻烦。你遇上过吗?  

  通常的Web应用都是无状态的连接,一般来说对于防火墙是非常友好的。但是,大多数JavaEE应用服务器都有连接池的概念。为了提高性能,应用服 务器会预先打开并保持一些和后台数据库服务器、LDAP服务器或其他服务器的连接。这些连接通常会将TCP的连接永久保持,除非发生了意外的情况。 

   我有几个项目发生的问题都是应用服务器和数据库之间由于安全级别的问题,设有不同的防火墙。在系统运行的时候,偶尔会发生数据库连接无法获得的错误(在系统很闲的时候)。客户怀疑应用服务器的不稳定性。

   通过各种工具的分析(snoop),发现当应用服务器的数据库连接出现问题的时候,数据库这端没有任何问题,所有的Session连接都在,但是从应用服务器发过来的TCP请求没有到达数据库服务器。是中间的防火墙阻断了数据库的连接。在一个空闲的TCP连接上,可以很长时间没有任何的数据流,许多TCP/IP的初学者都对此感到惊奇。因此当数据库连接长时间不用(这种情况很常见,例如连接池中有10个连接,由于负载很小,一直只用到前几个)。一般来说,防火墙软件都会定时检查空闲的连接,并将它们阻断,来保证一些异常的中断连接被清除。 

    这样,我们对数 据库连接问题的原因找到了,由于空闲的数据库连接长时间不用被防火墙给阻断是主要的原因。被阻断了的数据库连接在使用的时候不会自动重新连接吗?大多数应 用服务器所使用的专业的数据库连接池都会有自动重新连接来解决这个问题。也有一些客户使用自己的连接池,或者一些简单的开源的方案,没有自动重联的功能, 导致应用不可用。 

     就算有的连接池能够自动重连中断的连接,也不会时时刻刻都去检查这些在连接池中的连接是否被可用。因为这种检查非常消耗时间,还会影响应用,因此会每隔几分钟检查一次。在间隔时间内发生的连接中断仍然会引起系统的错误。
     另外的解决方案 就是从数据库服务器端进行配置,保证连接的畅通。例如在Oracle中可以设置SQLNET.EXPIRE_TIME小于防火墙的中断时间,就能够是 Oracle的数据库连接在没有数据交换的情况下,由服务器端自动发出探测的数据报,使得防火墙不再认为数据库连接是空闲的连接。
分享到:
评论

相关推荐

    OTA考勤机培训教程.pptx

    常见问题解答 1> 找不到指定的服务器:可能是网络不通、防火墙阻塞1433端口、该服务器没有启动。若是本地服务器初次安装没有启动Sql Server,要等待片刻才可以启动。2> 连接不到指定服务器:请检查验证方式、用户名...

    java开源包4

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包1

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    java开源包11

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包2

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包3

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包6

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包5

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包10

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包8

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包7

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包9

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    java开源包101

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    Java资源包01

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    网络安全应急预案(2).doc

    (4)、由网络攻击或病毒、木马等引起的网络堵塞等现象,应立即拨掉网线,将故障计 算机(服务器)脱离网络,并关闭计算机后重新开机,下载安装最新的杀毒软件对故障计算 机逐一进行杀毒处理;对连接交换进行断电处理; (5)、...

    网络安全试题答案.doc

    关于特洛伊木马的描述,哪句话是错误的( ) A、基本远程控制的黑客工具 B、窃取用户的机密信息,破坏计算机数据文件 C、利用系统上的高端端口进行后台连接 D、大量的流量堵塞了网络,导致网络瘫痪 17.以下关于...

    计算机网络技术19春在线作业2-0001.docx

    A:总线形结构 B:环形结构 C:点一点全连接结构 D:采用集线器连接的星形结构 答案:A,B,D 配置管理系统应包括以下功能() A:视图管理 B:拓扑管理 C:软件管理 D:性能管理 答案:A,B,C 关于机算机网络,以下说法哪个...

Global site tag (gtag.js) - Google Analytics