TongWeb8数据源相关问题
问题一:数据源连接不足
当TongWeb数据源连接用完时,除了监控中看到连接占用高以外,日志中会有如下提示信息。
2023-02-14 10:24:43 [WARN] - com.tongweb.web.jdbc.pool.PoolExhaustedException: [TW-0.0.0.0-8088-3] Timeout: Pool empty. Unable to fetch a connection in 30 seconds, none available[size:10; busy:10; idle:0; lastwait:786].
2023-02-14 10:24:43 [WARN] - at com.tongweb.web.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:660)
2023-02-14 10:24:43 [WARN] - at com.tongweb.web.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:171)
2023-02-14 10:24:43 [WARN] - at com.tongweb.web.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:117)
2023-02-14 10:24:43 [WARN] - at com.tong.TestServlet.testDB(TestServlet.java:61)
2023-02-14 10:24:43 [WARN] - at com.tong.TestServlet.doGet(TestServlet.java:38)
2023-02-14 10:24:43 [WARN] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:503)
2023-02-14 10:24:43 [WARN] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:590)
造成这一问题的原因有两个:
数据源的"最大连接数" 设置过小,无法满足并发需求,适当调大"最大连接数"即可。但不可超过:数据库可用的连接数=数据库设置的最大连接数-其它系统已用的连接数。
应用存在连接泄露或SQL执行时间过长,导致连接耗光。在接下来的说明中介绍分析方法。
问题二:应用存在连接泄露的情况
针对应用存在连接泄露的情况,可以开启TongWeb的"连接泄漏检查",“泄漏时记录日志”。可以从堆栈检查出应用哪里打开Connection,而没有close()。
2023-02-14 10:53:27 [WARN] - Connection leak detected, PooledConnection[com.mysql.cj.jdbc.ConnectionImpl@4c9438e4]:java.lang.Exception
at com.tongweb.web.jdbc.pool.ConnectionPool.getThreadDump(ConnectionPool.java:102)
at com.tongweb.web.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:747)
at com.tongweb.web.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:610)
at com.tongweb.web.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:171)
at com.tongweb.web.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:117)
at com.tong.TestServlet.testDB(TestServlet.java:61) #检查这部分代码并修改
at com.tong.TestServlet.doGet(TestServlet.java:38)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:503)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:590)
若应用不能修改代码,则可以再开启"泄漏时关闭连接", 将在达到“泄漏判定时间”后,强制回收连接。注意“泄漏判定时间”要大于正常的SQL执行时间。

问题三:应用存在未关闭的statement,导致数据库游标不足的情况
针对应用存在未关闭的statement,导致数据库游标不足的情况,可开启"跟踪语句"。这样在connection.close()时会关闭相应的statement。

若想修改应用代码关闭statement,可开启"跟踪未关闭堆栈",从中可看到哪里没有关闭。如下:
2023-02-14 11:09:30 [WARN] - Statement created, but was not closed at: java.lang.Throwable: Statement created at stack
at com.tongweb.web.jdbc.pool.interceptor.StatementFinalizer$StatementEntry.<init>(StatementFinalizer.java:92)
at com.tongweb.web.jdbc.pool.interceptor.StatementFinalizer.createStatement(StatementFinalizer.java:31)
at com.tongweb.web.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:57)
at com.tongweb.web.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:90)
at com.tongweb.web.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:55)
at com.tongweb.web.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:90)
at com.tongweb.web.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:60)
at com.sun.proxy.$Proxy38.prepareStatement(Unknown Source)
at com.tong.TestServlet.testDB(TestServlet.java:66)
at com.tong.TestServlet.doGet(TestServlet.java:38)
问题四:连接有效性验证无SQL配置
TongWeb8数据源会看到没有配SQL语句, 连接验证不再配SQL语句,而是通过connection.isValid(timeout) API来验证(TongWeb7也是有这功能的),开启验证日志后,若验证失败会有如下日志输出。
2022-06-07 13:55:45 [ERROR] - isValid() returned false.
2022-06-07 13:55:45 [ERROR] - isValid() returned false.
2022-06-07 13:55:45 [ERROR] - isValid() returned false.
问题五:慢SQL的检查
若怀疑有慢SQL可以开启"慢SQL监视"。

可以在监控和日志中看到慢的SQL。

2023-02-14 14:16:57 [WARN] - Slow Query Report SQL=select * from test01,testd where test01.test01=testd.test01 and test01.test01 like "%b6%"; time=9075 ms;
获取慢SQL后可进行优化,或进行SQL超时设置,这取决于JDBC驱动支持API Statement.setQueryTimeout(int timeout)

Failed Query Report SQL=select * from test01,testd where test01.test01=testd.test01 and test01.test01 like "%b6%"; time=5024 ms;
com.mysql.cj.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:113)
at com.mysql.cj.jdbc.StatementImpl.checkCancelTimeout(StatementImpl.java:2189)
at com.mysql.cj.protocol.a.NativeProtocol.sendQueryPacket(NativeProtocol.java:1033)
at com.mysql.cj.protocol.a.NativeProtocol.sendQueryString(NativeProtocol.java:897)
at com.mysql.cj.NativeSession.execSQL(NativeSession.java:1073)
at com.mysql.cj.jdbc.StatementImpl.executeQuery(StatementImpl.java:1166)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.tongweb.web.jdbc.pool.interceptor.AbstractQueryReport$StatementProxy.invoke(AbstractQueryReport.java:219)
at com.sun.proxy.$Proxy41.executeQuery(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.tongweb.web.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:97)
at com.sun.proxy.$Proxy41.executeQuery(Unknown Source)
at com.tong.TestServlet.testDB(TestServlet.java:67)
at com.tong.TestServlet.doGet(TestServlet.java:38)
问题六:采用 java:comp/env/jdbc/testdb方式引用数据源
(1) 配置数据源jdbc/testdb
(2)代码 dataSource = (DataSource) initialContext.lookup("java:comp/env/jdbc/testdb");
(3)应用web.xml中配如下内容
<resource-ref><description>jdbc/testdb</description><res-ref-name>jdbc/testdb</res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth>
</resource-ref>
相关文章:

TongWeb8数据源相关问题
问题一:数据源连接不足当TongWeb数据源连接用完时,除了监控中看到连接占用高以外,日志中会有如下提示信息。2023-02-14 10:24:43 [WARN] - com.tongweb.web.jdbc.pool.PoolExhaustedException: [TW-0.0.0.0-8088-3] Timeout: Pool empty. Una…...

关于最近大热的AI,你怎么看?
AI人工智能,相信大家都不陌生,也都接触过不少。但是最近小编在网上冲浪的时候发现各大媒体又掀起了一阵AI热潮,AI不是很常见了吗?是又有什么新的发展吗? 带着强烈的好奇心,我在地铁上读完了一篇关于Chatgp…...
25.架构和软件产品线
文章目录25 Architecture and Software Product Lines架构和软件产品线25.1 An Example of Product Line Variability 产品线可变性的一个例子25.2 What Makes a Software Product Line Work? 软件产品线的工作原理是什么?25.3 Product Line Scope 产品线范围25.4 …...

Seata-server 源码学习(一)
Seata源码学习引入 学习了Seata的应用以后,我们从这开始要开始分析Seata的源码相关内容 源码下载 官方地址:https://seata.io/zh-cn/blog/download.html 通过idea打开seata-1.4.2版本的源码 回顾AT模式 其实在之前的应用课程中,我们已经用…...
2023新华为OD机试题 - 斗地主(JavaScript)
斗地主 题目 斗地主起源于湖北十堰房县, 据传是一位叫吴修全的年轻人根据当地流行的扑克玩法“跑得快”改编的, 如今已风靡整个中国,并流行于互联网上 牌型: 单顺,又称顺子,最少5张牌,最多12张牌(3...A),不能有2, 也不能有大小王,不计花色 例如:3-4-5-7-8,7-8-9-1…...

素数相关(结合回文数,合数)线性筛素数(欧拉筛法)Euler【算法模板笔记】
一、朴素筛法(埃拉托斯特尼筛法)Eratosthenes 筛法(埃拉托斯特尼筛法,简称埃氏筛法)时间复杂度是O(nloglogn)不常用,被欧拉筛代替,略二、线性筛素数(欧拉筛法)简介线性筛…...

1.7配置OSPF手动汇总
实验7:配置OSPF手动汇总 实验目的实现OSPF路由汇总的配置阐明OSPF引入的外部路由时进行路由汇总的方法实验拓扑配置OSPF手动汇总实验拓扑如图1-17所示。 图1-17 配置OSPF手动汇总 实验步骤配置IP地址,配置OSPF(和实验6一致,此处略)在…...

多线程下载工具axel的安装和使用
多线程下载工具axel的安装和使用 Axel是一个轻量级下载程序,它和其他加速器一样,对同一个文件建立多个连接,每个连接下载单独的文件片段以更快地完成下载。 Axel 支持 HTTP、HTTPS、FTP 和 FTPS 协议。它也可以使用多个镜像站点下载单个文件…...

大数据专业职业前景如何
大数据专业毕业生未来的岗位选择空间比较大,有三大类岗位可选择分别是大数据开发岗位、大数据分析岗位和大数据运维岗位,在不同的行业和技术体系结构下这些岗位也包含很多细分的岗位。 大数据开发岗位分为平台研发岗位和行业场景开发岗位两大类…...
拉格朗日乘数法在原材料选择问题上的具体应用
问题需求: 输入待制作的材料:(材料长,材料数量) 分别为(5401,124)、(200,135)、(1350,45), 输入原材料长度最大值6500,最小值3500&…...

零信任-腾讯零信任iOA介绍(4)
腾讯零信任介绍 腾讯零信任是一种信息安全架构,旨在通过限制对计算设备、数据和应用程序的访问来保护敏感信息。腾讯零信任的主要思想是,任何计算设备、数据或应用程序都不应被自动信任,并需要经过授权后才能访问敏感信息。 腾讯零信任的…...
标准的maven依赖包应该包含哪些东西?
背景在阅读源码的时候,发现有一些maven依赖包里面没有包含pom文件,一些maven依赖包包含,而且除此之外还有一些细微的差异。今天就来聊一下关于一个标准的依赖包应该是什么样子的。一个标准的Maven依赖包通常包含以下文件:Java类文…...

网络安全-Nmap
网络安全-Nmap Nmap-号称诸神之眼 这个呢就是用来扫描网络端口的 Namp的工作原理很像一个雷达 做任何攻击之前,得先知道怎么去找破绽,而不是钢铁洪流,那个是不叫渗透了,叫硬钢。 咋用呢? 很简单 直接 nmap 后面跟网址…...

【物联网】mqtt初体验
文章目录安装EMQXjava集成添加依赖mqtt配置参数发布组件订阅组件测试接口接口测试最近在了解物联网云平台方面的知识,解除了mqtt协议,只看书籍难免有些枯燥,所以直接试验一下,便于巩固理论知识。 broker服务器操作系统:…...

2023年阿里云活动有哪些实例规格的云服务器?如何选择这些实例规格
2023年阿里云活动有哪些实例规格的云服务器?新手用户通过阿里云活动选购阿里云服务器的时候实例规格应该怎么选,因为同配置的云服务器往往有多种不同是规格的云服务器可供选择,而且不同实例规格的云服务器之间价格差别还比较大,因…...

深入理解 Handler(java 层 + native 层)
文章目录回顾线程消息队列时怎样实现的消息是怎么传递的?Handle 的延迟消息是怎么处理的?IdleHandler 的原理主线程进入了 Looper 循环为什么没有 ANR?消息屏障是什么?回顾 之前学习过Handler相关的基础知识,今天再学…...

初步认识操作系统(Operator System)
操作系统一,冯诺依曼体系结构内存的重要作用二,操作系统的概念三,设计操作系统的目的三,操作系统在计算机体系中的定位四,操作系统是如何进行管理的一,冯诺依曼体系结构 在众多计算机相关的书籍中ÿ…...
Android—HTTPS部署自签名证书
一、生成自签名私有证书单向认证(只需要服务端证书) 生成server_ks.jks服务端密钥配置到服务端生成server.cer服务端证书配置到客户端 双向认证(还需要客户端证书,和信任证书) 生成client_ks.jks客户端密钥配置到客户…...

java基于springboot+vue微信小程序的学生健康管理
任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场调研,需求分析,概要设计,详细设计,编码,测试这些步骤,基于Java语言、微信小程序技术设计并实现了学生健康管理小程序。系统主要包括系统首页、个人中心、学生管理、健康档案管理、体检报告管理、健康评估管…...

金三银四丨黑蛋老师带你剖析-漏洞岗
作者丨黑蛋病毒岗之前我们简单看了看二进制逆向岗位和漏洞岗,今天我们来看一看病毒岗位,就单纯看二进制病毒岗位和漏洞岗位,其所需要的基础知识是差不多的,在Windows平台上,无非就是汇编,C语言,…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...

听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...