Druid

数据库线程池2——线程池调优

让人想犯罪 __ 提交于 2020-11-14 04:01:58
一、数据库Connection Pool 连接池是什么 每当程序需要读写数据库的时候。Connection.Open()会使用ConnectionString连接到数据库,数据库会为程序建立 一个连接,并且保持打开状态,此后程序就可以使用T-SQL语句来查询/更新数据库。当执行到Connection.Close()后,数据库就会关闭当 前的连接。 但是如果我的程序需要不定时的打开和关闭连接,(比如说 ASP.Net 或是 Web Service ),例如当Http Request发送到服务器的时候、,我们需要打开Connection 然后使用Select* from Table 返回一个DataTable/DataSet给客户端/浏览器,然后关闭当前的Connection。那每次都Open/Close Connection 如此的频繁操作对于整个系统无疑就成了一种浪费。 ADO.Net Team就给出了一个比较好地解决方法。将先前的Connection保存起来,当下一次需要打开连接的时候就将先前的Connection 交给下一个连接。这就是Connection Pool。 二、数据库Connection Pool连接池的注意事项    最小连接数:   是数据库一直保持的数据库连接数,所以如果应用程序对数据库连接的使用量不大,将有大量的数据库资源被浪费。    初始化连接数:  

Springboot整合Druid监控

老子叫甜甜 提交于 2020-11-13 03:24:39
一.添加依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version> 1.1 . 6 </version> </dependency> 使用下面这个 上面那个会使SQL监控没数据。。 我也不知道why..       <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.6</version> </dependency> 二.修改application.properties中Druid的配置 druid: filters: stat max -active: 20 initial -size: 1 max -wait: 30000 min -idle: 1 time -between-eviction-runs-millis: 60000 min -evictable-idle-time-millis: 300000 test - while -idle: true test -on-borrow: false test -on- return : false pool -prepared-statements

springboot + druid

自古美人都是妖i 提交于 2020-11-12 10:38:17
一、公司项目是这样配置的 1. 拦截器 /** * 配置监控拦截器 * druid监控拦截器 */ @WebFilter(filterName = "druidWebStatFilter", urlPatterns = "/*", initParams = { @WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"), // 忽略资源 }) public class DruidStatFilter extends WebStatFilter { } 2. 视图配置 /** * druid监控视图配置 */ @WebServlet(urlPatterns = "/druid/*", initParams = { @WebInitParam(name = "allow", value = ""), // IP白名单 (没有配置或者为空,则允许所有访问) // @WebInitParam(name = "deny", value = ""), // IP黑名单 (存在共同时,deny优先于allow) @WebInitParam(name = "loginUsername", value = "ledi"), // 用户名 @WebInitParam

Springboot 添加druid监控

若如初见. 提交于 2020-11-11 21:46:33
pom <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version> 1.1 . 9 </version> </dependency> yml spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver - class - name: com.mysql.cj.jdbc.Driver url: jdbc:mysql: // localhost:3306/shiroDemo?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8 username: root password: root initialSize: 5 # 配置Druid的其他参数,以下配置必须增加一个配置文件才能有效 # 初始化大小,最小,最大 minIdle: 5 maxActive: 20 # 获取连接等待超时的时间 maxWait: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 timeBetweenEvictionRunsMillis: 60000 # 配置一个连接在池中最小生存的时间,单位是毫秒

关于使用JDBC读取Apache Druid遇到的问题以及解决思路

耗尽温柔 提交于 2020-11-08 08:48:58
关于使用JDBC读取Apache Druid遇到的问题以及解决思路 在使用 Apache Druid 提供的JDBC api 时,遇到了以下问题: 在Apache Druid 的web页面端可以执行的SQL语句,在放到了JDBC执行时会有无法执行的情况: 例如 where XXX in (‘xx’,‘xx’)语法 原因猜想 :可能是版本低的原因造成。 解决思路 : 在不尝试更改现有版本的情况下,通过查阅Druid官方文档发现: 向Druid发送查询是可以通过 curl 发送一个特定内容的 .json格式的文件来实现的。 基于此方法,我们可以通过使用java 来执行 curl 命令,并且动态将参数传入特定的.json文件。 curl 命令 : .json文件内容: 使用效果: 这样就可以保证:只要是Druid 的web页面可以执行的SQL语句,同样在java中正确执行,不仅提高了SQL编写效率, 而且可以将在java中得到的结果直接进行处理使用。 附: Apache Druid 官方文档 来源: oschina 链接: https://my.oschina.net/u/4398987/blog/4707866

Calcite技术研究

大兔子大兔子 提交于 2020-11-02 05:34:42
原文作者:王长春,来自平安银行零售大数据团队 概述 Apache Calcite是一个基础的软件框架,它提供了查询处理、查询优化以及查询语言支持的能力。很多流行的开源数据处理系统例如Apache Hive,Apache Storm,ApacheFlink,Druid等都采用了它。 下图是采用Apache Calcite的开源数据处理系统,以及Calcite能连接到的数据源。 大多数数据处理系统是使用Calcite来做SQL解析和查询优化。还有部分使用Avatica(Calcite的子项目)来构建自己的JDBC driver。还有部分使用Calcite来重写查询请求以使用物化视图。 最近十几年来,出现了很多专门的数据处理引擎。例如列式存储、流处理引擎、文档搜索引擎等等。这些引擎宣称他们在特殊方面能提供更高“性价比”的性能,并且宣称“one size fits all”范式的时代已经终结了。Spark、Storm、Flink、Elasticsearch、Druid等多种引擎的流行确实说明了这一点。 这些数据处理引擎都面临着一些共同但是难以解决的问题。 一是数据处理引擎都要做查询优化以及提供sql查询语言或者其他DSL查询语言。 二是使用者可能使用了多个专门的数据引擎,例如使用了ES、Spark、Druid.那么使用者很可能会有在异构数据源上支持查询以及查询优化的需求。 Apache

追源码的平凡之路

时光总嘲笑我的痴心妄想 提交于 2020-10-28 13:55:20
在斯坦福大学, 乔布斯做了一场我认为他最精彩的演讲之一 (另一场可能是iphone的问世发布会)。他讲了第一个故事 "connecting the dots" 你不可能充满预见地将生命的点滴串联起来;只有在你回头看的时候,你才发现这些点点滴滴之间的联系。所以,你要坚信,你现在所经历的将在你未来的生命中串联起来。你不得不相信某些东西,你的直觉、命运、生活、因缘际会……正是这种信仰让我不会失去希望,它让我的人生变得与众不同。 什么是连接生命中的点滴呢?我的理解:当一个人的能力还在上升期, 格局和视野还不够广阔的时候,他需要专注当前的事情,并且把每件事情做到他当时的能力所能做到的极限,也许当时没有那么大的成就感,但"蓦然回首,那人却在灯火阑珊处"。 十年前刚进入IT这个行业的时候,我是一个很普通的工程师,脑袋也不灵光,工作老是得不到要领,我的同学智商很高,他看一次代码基本就会写了,我得花很长时间去消化吸收,我对自己能不能在这一行生存下去都产生了质疑。 没有办法,只能勤能补拙,笨鸟先飞, 当遇到问题的时候, 我都抱着死咬不放的心态去寻找最佳解决方案, 洗澡的时候,睡觉的时候,吃饭的时候,甚至上厕所的时候都会去思考。很自然的,"追"源码也成为我程序生命中的一部分。 阅读过很多源码,和大家分享几个对我的职业影响比较大的追源码的经历。 正文 1 Druid 连接池 这是在2013年

架构设计 | 分布式体系下,服务分层监控策略

老子叫甜甜 提交于 2020-10-24 22:47:08
本文源码: GitHub·点这里 || GitEE·点这里 一、分布式故障 分布式系统的架构,业务开发,这些在良好的思路和设计文档规范之下,是相对来说好处理的,这里的相对是指比较分布式架构下生产环境的突然故障。 在实际的开发中,有这样一个很妖娆的情况:越是核心复杂的业务,越是担心出问题,越容易出问题。 所以当核心服务的链路出现故障时,如何快速定位问题就是一件很头疼的事情,尤其是一些特殊情况下,问题很模糊很难复现,外加客户或者领导催促,这种场景心里阴影是大部分开发都有的。更有甚者,可能问题发生的切入点的开发是某人负责的,实际问题是发生在请求链路的其他服务上,这种情况遇多了,甩锅水平会直线上升。 越是复杂的系统,越是经验丰富的开发或者运维,对监控系统就越是有执念,尤其是全链路的监控,底层,网络,中间件,服务链路,日志观察预警等,用来快速定位问题,省时省心。 二、全链路监控 1、监控层次 在分布式系统中,需要监控的体系和层次极其复杂,通常整体上划分为三个层次:应用服务,软件服务,硬件服务。 通常情况,运维管理硬件服务,开发管理应用和软件服务。 2、应用服务 应用层为开发的业务逻辑服务,也是最容易突发问题的一个层面,当在一家公司待久了,因为开发过多个业务线,就会感觉自己不是开发,是个打杂的,每天都要分出大量时间处理各种问题。应用层监控涉及下面几个核心模块: 请求流量 任何服务

【sping-boot】配置druid 连接池

|▌冷眼眸甩不掉的悲伤 提交于 2020-10-24 20:35:46
添加配置 修改pom.xml文件 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version> 1.1 . 20 </version> </dependency> 修改application.yml文件 spring: datasource: url: jdbc:mysql: // 127.0.0.1:3306/komo?characterEncoding=utf-8 username: root password: 123456 driver - class - name: com.mysql.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource # Druid连接池配置 druid: # 初始化大小,最小,最大 initial -size: 5 max -active: 30 min -idle: 5 # 获取数据库连接等待的超时时间 max -wait: 3000 max

一起学习SSM框架之spring(三)

∥☆過路亽.° 提交于 2020-10-21 15:39:06
Spring ==Spring整合MyBatis== 配置数据源 1.引入jdbc.properties配置文件 2.整合Spring配置文件和properties配置文件 3.Druid连接池可选参数 4.Druid监控中心 5.测试监控中心 整合MyBatis 1.导入依赖 2.配置SqlSessionFactory 3.配置MapperScannerConfigurer 4.配置Service ==事务== 1.配置DataSourceTransactionManager 2.配置事务通知 3.事务属性 3.1隔离级别 3.2传播行为 3.3读写性 3.4事务超时 3.5事务回滚 4.编织 Spring整合MyBatis 配置数据源 1.引入jdbc.properties配置文件 jdbc.properties jdbc . url = jdbc : mysql : / / localhost : 3306 / mybatis ? useUnicode = true & characterEncoding = utf - 8 & useSSL = false jdbc . username = root jdbc . password = root jdbc . driver = com . mysql . jdbc . Driver jdbc . init = 1 jdbc