连接数

Oracle超出最大连接数问题及解决

大城市里の小女人 提交于 2019-12-31 17:08:54
用过Oracle的应该都熟悉如何查看和设置Oracle数据库的最大连接数。这里就再啰嗦一遍。 查看当前的连接数,可以用select count(*) from v$process; 设置的最大连接数(默认值为150)select value from v$parameter where name = ‘processes’; 修改最大连接数alter system set processes = 300 scope = spfile; 都知道,当数据库最大连接数不够时会出现客户端连接间歇性失败,报错ORA-12519。设置大点一般就可以了。但是做大型项目的时候还是会遇到一些不正常的问题,比如:设置最大连接数800,但是正常连接200多个就会报错,这也是我在一次面试中得知的。回来因为自己的垃圾机器上没有装Oracle,就查了些资料,发现还真的有这个问题,不过不是什么难题,貌似很多人遇到过,看来我们真的做项目太少了吧,顶多同时测试的也就十多个人。 网上搜集到有此类问题的描述,如下。 服务器IBM XSERVER,内存:4G oracle 数据库配置的主要参数如下: processes integer 500 sessions integer 585 pga_aggregate_target big integer 350M sga_max_size big integer 1256M

GRPC连接池的设计与实现

混江龙づ霸主 提交于 2019-12-30 16:20:53
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前言 在分布式高并发服务器中,client到server以及server中的多个节点之间的连接往往使用连接池来管理。简单来说就是将提前创建好的连接保存在池中,当有请求到来时,直接使用连接池中的连接对server端访问,省去了创建连接和销毁连接的开销(TCP建立连接时的三次握手和释放连接时的四次挥手),从而提高了性能。 目录 设计原则 基本原理 GRPC特性 GRPC调优 实现细则 延伸阅读 <a name="chapter1"></a>设计原则 连接池的扩缩容 空闲连接的超时与保活 池满的处理机制 连接池的扩缩容 通常连接池属性包含最大空闲连接数和最大活跃连接数。 最大空闲连接数 :连接池一直保持的连接数,无论这些连接被使用与否都会被保持。如果客户端对连接池的使用量不大,便会造成服务端连接资源的浪费。 最大活跃连接数 :连接池最多保持的连接数,如果客户端请求超过次数,便要根据 池满的处理机制 来处理没有得到连接的请求。 扩容 :当请求到来时,如果连接池中没有空闲的连接,同时连接数也没有达到最大活跃连接数,便会按照特定的增长策略创建新的连接服务该请求,同时用完之后归还到池中,而不是关闭连接。 缩容 :当连接池一段时间没有被使用,同时池中的连接数超过了最大空闲连接数,那么便会关闭一部分连接

Jmeter常用插件——Stepping Thread Group ,JMETER以及关于数据库性能分析

浪子不回头ぞ 提交于 2019-12-30 01:21:14
使用方法: 1、添加线程组——jp@gc - Stepping Thread Group 2、Stepping Thread Group界面如下: 上图的各项意思: This group will start 100 threads:设置线程组启动的线程总数为100个; First,wait for N seconds:启动第一个线程之前,需要等待N秒; Then start N threads:设置最开始时启动N个线程; Next,add 10 threads every 30 seconds,using ramp-up 5 seconds:每隔30秒,启动10个线程,10个线程在5秒内启动完成; Then hold load for 60 seconds:启动的线程总数达到最大值之后,再持续运行60秒; Finally,stop 5 threads every 1 seconds:每秒停止5个线程; 这里是对每个插件的用处进行解释: PerfMon Metrics Collector:用于监控机器的CPU、Memory、swap、Disks I/O、Networks I/O。CPU:cpu占用量百分比; Memory:存储量的使用情况;swap:交换区的使用情况;Disks I/O:磁盘I/O;Networks I/O:网络I/O Hits per Second

MySql数据库连接池专题

吃可爱长大的小学妹 提交于 2019-12-29 03:49:06
一、什么是数据库连接池? 官方: 数据库 连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。 个人理解:创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠。 二、传统的连接机制与数据库连接池的运行机制区别  传统统链接: 一般来说,Java应用程序访问数据库的过程是:   ①装载数据库驱动程序;   ②通过JDBC建立数据库连接;   ③访问数据库,执行SQL语句;   ④断开数据库连接。 使用了数据库连接池的机制: (1) 程序初始化时创建连接池 (2) 使用时向连接池申请可用连接 (3) 使用完毕,将连接返还给连接池 (4) 程序退出时,断开所有连接,并释放资源 一. 为何要使用数据库连接池 假设网站一天有很大的访问量,数据库服务器就需要为每次连接创建一次数据库连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正式针对这个问题提出来的.

数据库连接池的原理

落爺英雄遲暮 提交于 2019-12-29 03:48:11
 对于共享资源,有一个很著名的设计模式:资源池(resource pool)。该模式正是为解决资源频繁分配、释放所造成的问题。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量 的连接,当需要建立数据库连接时,只需要从缓冲池中取出一个了,使用完毕后再放回去。我们可以通过设定连接池最大数来防止系统无尽的与数据库连接。更为重 要的是我们可以通过连接池的管理机制监视数据库连接使用数量,使用情况,为系统开发,测试以及性能调整提供依据。 连接池的相关问题分析: 1、并发问题。   为了使连接管理服务具有最大的通用性,必须考虑多线程环境,并发问题。这个问题相对比较好解决,因为各个语言自身提供了并发管理的支持,比如java c#等,使用synchronized(java) lock(c#)等关键字确保线程同步。 2、事务管理。   我们知道,事务具有原子性,此时要求对数据库操作符合“ALL-ALL- NOTHING”原则,即对于一组sql语句要么全做,要么全不做。我们知道当两个线程共用一个连接connection对象时,而且各自都有自己的事务 要处理时,对于连接池是一个很头疼的问题,因为即使connection类提供了相应的事务支持,可是我们仍然不能确定那个数据库操作对应那个事务。知识 由于我们的两个线程都在进行事务操作

Nginx配置文件nginx.conf中文详解

笑着哭i 提交于 2019-12-28 07:20:51
#定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数。 worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /var/log/nginx/error.log info; #进程文件 pid /var/run/nginx.pid; #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。 worker_rlimit_nofile 65535; #工作模式与连接数上限 events { #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。 use epoll; #单个进程最大连接数(最大连接数=连接数*进程数) worker_connections 65535; } #设定http服务器 http { include mime.types;

数据库连接池

寵の児 提交于 2019-12-27 17:39:21
在使用开发基于数据库的 web 程序时,传统的模式基本是按以下步骤:    在主程序(如 servlet 、 beans )中建立数据库连接。 进行 sql 操作 断开数据库连接。 这种模式开发,存在的问题 : 普通的 JDBC 数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection 加载到内存中,再验证用户名和密码 ( 得花费 0.05s ~ 1s 的时间 ) 。需要数据库连接的时候,就向数据库要求一个,执行完成后再断开连接。这样的方式将会消耗大量的资源和时间。数据库的连接资源并没有得到很好的重复利用 . 若同时有几百人甚至几千人在线,频繁的进行数据库连接操作将占用很多的系统资源,严重的甚至会造成服务器的崩溃。 对于每一次数据库连接,使用完后都得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将导致重启数据库。 这种开发不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃。 为解决传统开发中的数据库连接问题,可以采用数据库连接池技术。 数据库连接池的基本思想就是为数据库连接建立一个 “缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。 数据库连接池负责分配、管理和释放数据库连接

元数据,DBUtils工具,连接池

大憨熊 提交于 2019-12-26 05:28:19
1 元数据 1 .1 作用 使用元数据,可以编写 jdbc预编译statement 的参数以及 ResultSet 的结果个数和名称 。 1.2 三种元数据 1 )数据库元对象( DatabaseMetaData ) 知道连接的哪个数据库,必须使用数据库的元数据对象 2 )参数元对象( ParameterMetaData ) insert into studnetx(xxxx) values(?,?); 预编译 sql 之后,知道预编译的 sql 有几个参数,必须使用参数元数据 3 )结果集元对象 (ResultSetMetaData) ResultSet rs 知道表的字段数,和字段名称,必须使用结果集的元数据 1.3 方法 ParameterMetaData pmd = stmt.getParameterMetaData();// 获取参数元数据 int paramCount = pmd.getParameterCount();// 获取占位符参数的个数 ResultSetMetaData rsmd = rs.getMetaData();// 获取返回结果的结果集元数据 int columnCount = rsmd.getColumnCount(); //得到列数量 String columnName = rsmd.getColumnName(i); //到字段名称 2

c3p0配置

穿精又带淫゛_ 提交于 2019-12-26 05:28:01
1.c3p0配置文件 <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <!-- This is default config! --> <default-config> <property name="initialPoolSize">10</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">100</property> <property name="minPoolSize">10</property> <property name="maxStatements">200</property> </default-config> <!-- This is my config for mysql--> <named-config name="mysql"> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=UTF8</property> <property

c3p0(数据库连接池)私人学习笔记

半城伤御伤魂 提交于 2019-12-26 05:25:38
俗话说“好记性不如烂笔头”,编程的海洋如此的浩大,养成做笔记的习惯是成功的一步! 此笔记主要是c3p0-0.9.1.2版本的笔记,并且笔记都是博主自己一字一字编写和记录,有错误的地方欢迎大家指正。 c3p0数据库池技术,Spring框架就是默认使用此数据库池技术。必须引入jar包:c3p0-0.9.1.2.jar。 1、使用方式一直接ComboPooledDataSource cbds = new ComboPooledDataSource();然后设置相应参数再获取Connection对象。(不推荐) 2、使用Properties配置文件,类似dbcp。 3、使用xml文件。也是使用ComboPooledDataSource cbds = new ComboPooledDataSource();不要再额外配置信息,直接就可以获取Connection对象。 4、使用连接池后,当获取Connection对象时,获取的不是原对象而是代理对象,Connection的close()方法也经过重写, 因此,Connection直接调用close()方法会被连接池收回资源,而并不是真正关闭Connection的链接。在使用时,应当手动调用close()方法, 可以加快连接池的回收,否则影响性能和效率。 xml文件路径跟名字已经固定(必须在src目录下建立c3p0-config.xml)