`
lanxin1985
  • 浏览: 81593 次
  • 性别: Icon_minigender_2
  • 来自: 大连
社区版块
存档分类
最新评论

多线程下的数据源连接

阅读更多

     最近系统突然出现了一个让我无比头痛的问题,系统后台一个劲的报错:数据库发生死锁、数据库服务不存在或者拒绝访问。这几天查了很多地方,关于死锁问题,关于网络问题,可是丝毫没有进展,直到我使用工具查看到web服务器的机子上对于数据库连接的请求出奇的多,达到了了3000多个timewait状态的连接。系统本身除了启动web服务外,还启动了3个线程,我只好就这三个线程一个个的排查,结果发现真的是由于其中一个线程导致的。查看了相关的代码,发现代码里面用到的connection连接不一致,有一处用到了web服务的connection连接,于是修改了相关的connection连接。结果真的都好了。开心那。

      对问题总结一下。JDBC Connection 类是非线程安全的 ― 两个线程不能在小粒度级上安全地共享一个 Connection。

      经过本次事件我学到,1、多线程编程一定要注意线程安全问题。2、多线程会导致数据库死锁、数据库服务拒绝访问。

   

 

       ps:以下是这两天让我郁闷的错误信息。

ERROR 8284609 insert_account_reg [HttpProcessor[80][54]] insert_account_reg.java
 88 -- java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]Tra
nsaction (Process ID 258) was deadlocked on lock | communication buffer resource
s with another process and has been chosen as the deadlock victim. Rerun the tra
nsaction.

 

 

 ERROR 48838236 np2interfaceprj.InstructionParse [Thread-4] InstructionParse.java 252 -- once handle intruction guene error
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server 不存在或访问被拒绝
 at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6879)
 at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7036)
 at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3028)
 at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
 at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
 at java.sql.DriverManager.getConnection(DriverManager.java:512)
 at java.sql.DriverManager.getConnection(DriverManager.java:171)
 at cn.com.xinli.tools.dblink.DBPool$2.getConnection(DBPool.java:42)
 at cn.com.xinli.tools.dblink.DBPool.getConnection(DBPool.java:78)
 at np2interfaceprj.InstructionParse.run(InstructionParse.java:194)
 at java.util.TimerThread.mainLoop(Timer.java:432)
 at java.util.TimerThread.run(Timer.java:382)

分享到:
评论

相关推荐

    Powerbuilder中实现多线程同步查询数据 源程序

    Powerbuilder中实现多线程同步查询数据,同时连接不同的数据库 ,实现多线程同步查询数据

    异构数据源数据交换工具 DataX.zip

    详情请看:DataX 数据源指南 四、DataX3.0 核心架构 DataX 3.0 开源版本支持单机多线程模式完成同步作业运行,本小节按一个 DataX 作业生命周期的时序图,从整体架构设计非常简要说明 DataX 各个模块相互关系。...

    NIO-实践-多线程实例

    NIO用于高性能Socket编程由来已久,网络也有较为丰富的原理和源代码。我这里主要介绍几点经验总结: ...本文粘贴多线程在NIO环境下的基本运用示例代码,同时演示了一个线程如何对多个连接进行读写的操作。

    Spring3中配置DBCP,C3P0,Proxool,Bonecp数据源

    在Spring3中配置数据源,包括DBCP,C3P0,Proxool,Bonecp主要的数据源,里面包含这些数据源的jar文件和依赖文件及配置文件。。 如Bonecp目前听说是最快的数据源,速度是传统的c3p0的25倍, bonecp.properties文件: ...

    易语言客户端源码,易语言服务器端源码,易语言多文件多线程传送源

    多文件多线程传送系统结构:发送数据,服务器事件处理,保存文件子程序, ======窗口程序集1 || ||------_按钮_连接服务器_被单击 || ||------_按钮_发送_被单击 || ||------发送数据 || ||------__启动

    Java毕业设计-Java多线程与线程安全实践-基于Http协议的断点续传.rar

    1. 多线程下载:项目使用Java的多线程功能,将文件分成多个部分,每个部分由一个线程负责下载。这样可以充分利用网络带宽,提高下载速度。 2. 线程安全:项目中的多个线程需要共享资源,如文件、网络连接等。为了...

    socket多线程聊天

    本文件是基于vb6.0编写的socket聊天程序,运行时先启动服务器,在同一个局域网内启动客户端,输入服务器IP连接,连接成功后即可输入...注:服务器启动前要先将 服务器中的 ACCESS文件 创建名为"用户信息管理"的数据源。

    java8源码-QuantaAndroidStu2020:多线程和网络请求直播课源代码

    多线程和网络请求直播课源代码 直播课内容概要 多线程/网络请求 (侧重讲使用方法/原理篇幅较长,有兴趣可以自行探索) 一.多线程 //主线程 负责ui交互逻辑、 子线程负责处理耗时操作 1.线程的几种写法(匿名接口类/...

    计算机网络课程设计大作业之chatting room

    源代码 文档 需求分析 课程设计 MFC Socket 多线程,visual C++ 聊天室 概要设计 具体设计 Client Server Windows Sockets Socket的通信方式有两种方式。第一种方式是有连接的流方式,即需要在通信的两个应用程序...

    python3使用PyMysql连接mysql数据库实例

    本篇文章主要介绍了python3使用PyMysql连接mysql数据库实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Delphi利用多线程DB组件接口自动回收Query对象池

    内容索引:Delphi源码,数据库应用,多线程 Delphi多线程DB组件... 支持外部以多线程方式操作数据,例如:对无上下文关联的数据插入和查询;  4. 支持多个连接;  5. 可选弹出操作提示对话框,并可定制对话框内容;  

    C++实现断点续传,单线程

    C++实现断点续传,单线程的,可以在此基础上实现多线程,也就是多个socket连接,这里的服务端最多支持10个客户端连接,不过修改服务端的接收处理数据部分,实现多个socket的处理。 客户端和服务端包含源码,有对...

    scada与MySQL连接-SCADA系统与实时数据库数据同步.pdf

    数据源服务器表中存放了当前系统中的数据源服务器的⼀些基本的信息,如服务器ID、服务器 名称、IP地址等;任务表(包括实时任务和历史任务)中则展⽰了当前系统中的任务数据信息,并且根据任务的执⾏实时更新任务状态...

    WebSQLClient:JDBC 数据源的动态 Web 数据输入客户端-开源

    WebSQLClient 能够连接到任何 JDBC 数据源。 其主要目的是提供快速的数据模型驱动开发。 WebSQLClient 数据条目表单是通过查询数据库系统表信息生成的,但也可以手动配置。 WebSQLClient 包括与数据库无关的数据...

    Python 连接 MQTT,接受、发送消息示例

    可以在代码中手动指定消息内容,或者根据需要从其他数据源获取消息。 处理连接和消息循环: 调用client.loop_start()方法启动一个线程,用于处理与MQTT代理服务器的通信。 可以添加额外的逻辑,例如定时发布消息、...

    面试葵花宝典

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

    vb.net远程Access访问100%开源

    (1)多线程 (2)Socket通信(TCP/IP) (3)数据源XML导出导入 (4)XML分包 【实现功能】 (1)Access外网共享访问(废话,必须的) (2)多用户同时连接访问数据库 (3)理论上突破Access最大并发数255,...

    基于Linux嵌入式HTTP网络服务器的设计与实现

    程和多线程并发连接嵌入式H P网络服务器软件算法和程序设计。程序设计基于卜rFTI'协议作为软件开发的基础,主要包括3个关键内容: ‘ 个标准lI 1’M L 页的发送和接收,客户端向嵌入式1.I FTP网络服务器发送Web表单...

Global site tag (gtag.js) - Google Analytics