连接池

德鲁依连接池的数据监控

断了今生、忘了曾经 提交于 2019-12-01 21:46:33
引入依赖: <dependency>   <groupId>com.alibaba</groupId>   <artifactId>druid</artifactId>   <version>1.1.6</version> </dependency> 编写 配置类:DuridConfig package com.frost.config; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import

redis

喜夏-厌秋 提交于 2019-12-01 20:44:41
redis主要用于缓存 一、缓存   1.什么样的数据适合存放于缓存     安全系数比较低;查询频率比较高;修改频率比较低   2.常见的缓存技术     ehcache,memorycache,redis等 二、redis缓存 多种数据类型缓存:字符串类型、散列类型、列表类型、集合类型,有序集合类型 redis提供了两种持久化功能:RDB,AOF 可用作缓存、队列、消息订阅、发布 支持设置键的生存时间 (集群:把一个项目部署到多台服务器上) redis服务器返回值的类型   PONG、error、ok、integer、String、多行字符串 redis中基本命令 select 数字 选择数据库 flushall 清空所有数据库中的数据 flushdb 清空当前数据库中数据 keys 键名(* ?用法与sql数据库相同) 查询满足条件的键 exists 键名 判断某个是否存在 存在返回1 ,不存在返回0 del 键名(space)键名 删除某几个键 ,返回删除了几个键 help 命令名 存储的类型为字符串类型的命令 set key value 往redis中存储数据 get key 根据键获取redis中的数据 incr key 递增(1) incrby key increment 递增指定的数 decr key 递减 append key value 在key后面追加字符串

一 python+redis使用

拟墨画扇 提交于 2019-12-01 19:35:00
一 .redis+python 1.redis https://www.cnblogs.com/zhaohuhu/p/9140673.html#_label0_0 Redis是一个开源(BSD许可),内存数据结构存储,用作数据库,缓存和消息代理。 它支持数据结构,如 字符串,散列,列表,集合,带有范围查询的排序集,位图,超级日志和带有半径查询的地理空间索引。 Redis具有内置复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel提供高可用性和Redis Cluster自动分区。用于操作内存的软件 可以做持久化 AOF RDB-相当于一个大字典单进程单线程 redis常见性能问题和解决方案: (1) Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件 (2) 如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次 (3) 为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内 (4) 尽量避免在压力很大的主库上增加从库 (5) 主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3... 这样的结构方便解决单点故障问题,实现Slave对Master的替换。如果Master挂了

Druid连接池简单入门配置

元气小坏坏 提交于 2019-12-01 17:38:11
Druid集连接池,监控于一体整好复合当前项目的需要,项目是ssh结构,之前是用C3p0的,现在换一个连接池也是很简单的,首先spring配置DataSource,配置如下: <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 基本属性 url、user、password --> <property name="url" value="${jdbc_url}" /> <property name="username" value="${jdbc_user}" /> <property name="password" value="${jdbc_password}" /> <!-- 配置初始化大小、最小、最大 --> <property name="initialSize" value="1" /> <property name="minIdle" value="1" /> <property name="maxActive" value="20" /> <!-- 配置获取连接等待超时的时间 --> <property name="maxWait" value="60000" /> <!--

Druid连接池简单入门配置

十年热恋 提交于 2019-12-01 17:38:00
偶尔的机会解释Druid连接池,后起之秀,但是评价不错,另外由于是阿里淘宝使用过的所以还是蛮看好的。 Druid集连接池,监控于一体整好复合当前项目的需要,项目是ssh结构,之前是用C3p0的,现在换一个连接池也是很简单的,首先spring配置DataSource,配置如下: <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 基本属性 url、user、password --> <property name="url" value="${jdbc_url}" /> <property name="username" value="${jdbc_user}" /> <property name="password" value="${jdbc_password}" /> <!-- 配置初始化大小、最小、最大 --> <property name="initialSize" value="1" /> <property name="minIdle" value="1" /> <property name="maxActive" value="20" /> <!-- 配置获取连接等待超时的时间 -->

Spring配置数据源的常用方式

こ雲淡風輕ζ 提交于 2019-12-01 17:37:20
Spring配置数据源的常用方式 在应用程序中配置数据源 (1).在classpath中创建连接参数的配置文件,如db-config.properties,内容如下: driverClass=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/zzp username=root password=admin (2).在Spring的配置文件中引入参数配置文件,代码如下: <!-- 配置spring资源文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>/WEB-INF/config/db-config.properties</value> </list> </property> </bean> (3).配置数据源(这里有三种方式,jdbc、dbcp、c3p0) A.JDBC的配置方式,该方式区别与其他两种方式在于这种方式使用的是JDBC连接数据库,并没有使用连接池,所以效率和性能方面不及其他两种,该种方式的配置方法: <!-- 数据源 --> <bean id=

Druid连接池 报错:abandon connection原因分析

北慕城南 提交于 2019-12-01 16:42:46
问题现象: 使用Druid的数据库连接池,在进行一个查询SQL的时候,抛出了异常: [2017-10-20 01:40:59.269 ERROR com.alibaba.druid.pool.DruidDataSource:2189] abandon connection, owner thread: schedulerDuty_Worker-2, connected at : 1508434843057, open stackTrace ———————————————— 从报错信息中可以提取到,是Druid连接池执行SQL,获取Statement失败,导致的问题 问题分析: 根据异常的第一行,可以得知报错来自于DruidDataSource这个类,根据报错的信息,可以看出是因为执行SQL时获取不到Connection连接,然后去看一下Druid的配置中,有三个配置可以关注一下: 配置 默认值 说明 removeAbandoned false 是否强制关闭连接时长大于removeAbandonedTimeoutMillis的连接 removeAbandonedTimeoutMillis 300 * 1000 一个连接从被连接到被关闭之间的最大生命周期 logAbandoned false 强制关闭连接时是否记录日志 再去查看我们的配置,removeAbandoned是true

超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

六月ゝ 毕业季﹏ 提交于 2019-12-01 16:38:06
原文: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。 解决办法 1.在代码里面,把未关闭的连接关闭 2.扩大共享池,方法如下: 解决方法可以是修改连接池的连接生存期,因为默认值是60秒,即连接从应用程序被释放后可以在池中保存的时间。 具体操作步骤如下: 如果是ODBC的话,则可以在ODBC Data Source Administrator中手动更改,该程序位于“Start”菜单中的“Programs”->\"Adminstrative Tools\"(中文名:管理工具)下,或从\"Control Panel\"(中文名:控制面板)中打开“ODBC Data Source Administrator”(ODBC数据源管理器),再选择“Connection Pooling”(连接池)选项卡,双击驱动程序中的“SQL Server”,选择“Pool Connetions to this drive”(使用池连接该驱动程序),把下面的时间60秒改的大一点,例如120。 如果是SqlConnection的共享连接,则为ConnectionString属性Connection

DBUtils

*爱你&永不变心* 提交于 2019-12-01 16:30:13
DBUtils是Python的一个用于实现 数据库连接池 的模块。 此连接池有两种连接模式: 模式一:为每个线程创建一个连接,线程即使调用了close方法,也不会关闭,只是把连接重新放到连接池,供自己线程再次使用。当线程终止时,连接自动关闭。    POOL = PersistentDB( creator=pymysql, # 使用链接数据库的模块 maxusage=None, # 一个链接最多被重复使用的次数,None表示无限制 setsession=[], # 开始会话前执行的命令列表。如:["set datestyle to ...", "set time zone ..."] ping=0, # ping MySQL服务端,检查是否服务可用。# 如:0 = None = never, 1 = default = whenever it is requested, 2 = when a cursor is created, 4 = when a query is executed, 7 = always closeable=False, # 如果为False时, conn.close() 实际上被忽略,供下次使用,再线程关闭时,才会自动关闭链接。如果为True时, conn.close()则关闭链接,那么再次调用pool.connection时就会报错,因为已经真的关闭了连接

jedis 用连接池时超时返回值类型错误

纵然是瞬间 提交于 2019-12-01 14:26:37
这个是今天发现一个bug:在测试redis并发读写的时候(jedis作为客户端,并使用了连接池),总是报 java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Long at redis.clients.jedis.Connection.getIntegerReply(Connection.java:161) at redis.clients.jedis.Jedis.del(Jedis.java:108) 类似的错误,就是返回值类型和文档上的返回值类型不相符,感觉很不应该;开始怀疑是jedis实现的一个bug,后来发现一个现象,当抛一个超时异常的时候,后面就连续的出现一个类似上面的错误,最后终于发现了问题所在。 原先的代码是这样的: public long del(String key) { long rt = 0L; Jedis jedis = null; try { jedis = getJedis(); rt = jedis.del(key); } finally { releaseJedisInstance(jedis); } return rt; } 这样写貌似OK,但实际上有问题,假设jedis在执行这个命令的时候,因为redis超负荷,jedis可能返回超时的异常