连接数

数据库连接池

旧时模样 提交于 2019-12-26 05:25:24
数据库连接池 一、什么是数据库连接池   数据库连接是一种关键的、有限的、昂贵的资源。每次用户获取数据库连接都需要消耗较大的资源,数据库连接池可以管理连接,可以重复使用连接而不需要每次都进行创建。使用池来管理连接的生命周期,可以节省资源,提高性能。用池来管理Connection,这可以重复使用Connection。有了池,我们就不用自己来创建Connection,而是通过池来获取Connection对象。当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection,而是把Connection“归还”给池。池就可以再利用这个Connection对象了。数据库连接池的原理通俗地说:先创建好几个数据库放在池里,等系统需要用了直接去连接,并做上标记(连接),用完后再将数据库连接还回到池里,同时做上标记(空闲)。当有连接需求时,此时又没有空闲数据库连接,则会新建立连接放入池中。而这些参数我们都可以自己进行配置,如:   - 初始大小:10个   - 最小空闲连接数:3个   - 增量:一次创建的最小单位(5个)   - 最大空闲连接数:12个   - 最大连接数:20个   - 最大的等待时间:1000毫秒 二、常见连接池   这里总结下两个常见的连接池:DBCP和c3p0。导包是使用数据库连接池的第一步,   1.DBCP: 导jar包

windows08:远程桌面正忙无法完成执行任务解决方法

偶尔善良 提交于 2019-12-25 17:34:25
当我们有时候登录服务器windows2008时有时候会出现:远程桌面服务当前正忙,因此无法完成您尝试执行的任务,请在几分钟后重试。其他用户应该仍然能够登录,可能这种情况不少用户都有遇到过吧!那我们用户如果遇到这种情况时应该如何做呢?怎样解决这种问题呢?今天这篇文章宵云就来为各位解答一下以上所提到的问题。 问题:有段时间登录服务器总是提示:远程桌面服务当前正忙,因此无法完成您尝试执行的任务。请在几分钟后重试。其他用户应该仍然能够登录(或者登录出现黑屏界面)那这种情况应该如何解决呢? 在微软找到的原因是:Csrss.exe 进程和某些应用程序 (例如,Microsoft Excel 或 Microsoft Visio) 之间发生的死锁情况下会出现此问题。 解决方法如下:下载一个修复补丁,安装后重启服务器即可。 解决方法一 看一下你电脑任务管理器此项任务是否还在,如果在的话关掉就行了,很多时候是电脑没有反应过来造成的。 解决办法二 原因分析:此错误类似远程桌面超出最大连接数错误,远程桌面超出最大连接数时强制登录。 1、远程桌面超出最大连接数时可以使用以下命令强制登录,在命令行中执行: 2、如果目标主机修改了终端端口,将Port改为修改后的端口即可。 上面就是为各位整理的关于windows2008远程操作时提示“远程桌面服务当前正忙”的解决方法介绍了,本文一共介绍了两种解决方法

select、poll和epoll的比较

蓝咒 提交于 2019-12-24 07:25:40
一、select机制   在linux下网络通信中,经常用到select机制,这是一种异步通信的实现方式,select中提供一fd_set的数据结果, 实际上是一个long类型的数组 , 每一个数组元素都能与一打开的文件句柄建立联系,通常这个句柄并不局限于网络通信中的socket句柄,还包括其他文件、命名管道或设备句柄等。 当程序中调用select()时,由内核 根据IO状态修改fd_set的内容,由此来通知执select()的进程哪一Socket或文件可读或者可写。    select的本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。这样所带来的缺点是:   1、单个进程可监视的fd数量受到了限制,在32位机器上,他所能管理的fd数量最大为1024。   2、 需要维护一个用来存放大量fd的数据结构,这样会使得用户空间和内核空间在传递该结构时复制开销大。   3、 对socket进行扫描时是线性扫描,当socket文件描述符数量变多时,大量的时间是被白白浪费掉的。 二、poll机制   poll是 Linux中的字符设备驱动 中有一个函数,Linux 2.5.44版本后已经被epoll所取代。 poll机制是用在某些Unix系统中,使用poll()函数用于执行与select()函数同等功能的函数。    poll本质上和select没有区别

数据连接池的工作机制

房东的猫 提交于 2019-12-24 01:29:53
转自:https://blog.csdn.net/anglekill/article/details/6276257 J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。 调用 :客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为 忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。  释放 :当使用的池连接调用完成后,池驱动程序将此连接表记为空闲, 其他调用就可以使用这个连接。 --------------------------------------------------------分割线----------------------------------------------------------------- 最大维持连接数:没有任何请求时在连接池中可以存在的连接数 最大连接数:连接池中最多可以存在的连接个数。 最大等待时间:当断开连接时,超过最大维持连接数的连接不会马上销毁,最大等待时间过后它才会销毁。 连接池是将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接对数据库进行访问。这样省略了创建连接和销毁连接的过程。 现在假设:最大维持连接数是10,最大连接数是20,最大等待时间是10000(毫秒) 其过程:最开始在连接池中有10个连接(最大连接数),当有用户申请连接时

负载均衡算法

北城以北 提交于 2019-12-23 21:36:28
负载均衡算法可以分为下面几类: 任务平分类:可以按照平均分配或者加权平均分配的算法。 负载均衡类:按照服务器的负载,比如CPU负载,IO负载等进行分配(站在服务器的角度)。 性能最优类:客户端按照服务器的响应时间来分配请求(站在客户端的角度)。 Hash类:按照特定的信息进行hash值,然后分配给特定的服务器,比如按照IP hash算法,Session ID Hash算法,或者按照用户的ID hash等等。 一、任务平分类 轮询算法 该算法实现简单,即轮询每个服务器,分别将强求发送到不同的服务器中,不过对于某些场景,比如购物车业务会造成分布式session一致性问题。 而且该算法对于服务器的新旧,好坏程度无感知,如64核和32核的服务器的负载应当不同。 加权轮询 该算法解决上面的问题,可以按照服务器的核数等情况分配不同数量的请求 ,比如64核的服务器请求数应当多于32核的服务器。 但是该算也不能避免分布式session一致性的问题,也无法感知服务器的运行状态。(运行状态即服务器正在运行时的CPU负载以及IO负载)。 二、负载均衡类 负载最低优先算法 该算法解决了轮询无法感知服务器的运行状态的问题。 对于LVS负载均衡设备,可以通过“连接数”来衡量服务器的负载,连接数越多,负载越高。 对于Nginx负载均衡设备,可以通过“HTTP请求数”来衡量服务器负载等。 缺点:

高并发情况下可能需要对数据库做的配置

ぐ巨炮叔叔 提交于 2019-12-23 20:54:02
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1、最大连接数 mysql最大连接数默认151,其中150用来给普通用户连接数据库,其中一个用来给管理员救火,查看当前数据库最大连接数用: show variables like "max_connections"; 查看当前实际连接数: show processlist ; MySQL最大连接数是16384,超过这个数也是按这个数计算, 修改最大连接数: set global max_connections=12000 2、操作系统最大文件描述符限制 服务器(centos)默认操作系统最大文件描述符限制为1024,当并发量较大时,可能会得不到线程导致无法访问,当前最大文件描述符限制可以通过一下命令查看: [root@sqzr ~]# ulimit -n 如果较小,可以修改增加性能 来源: oschina 链接: https://my.oschina.net/u/3042999/blog/1648789

TCP半连接和syn攻击

99封情书 提交于 2019-12-23 20:53:43
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 摘自: http://blog.sina.com.cn/s/blog_54b5ea250100g2r8.html SYN攻击属于DOS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。TCP协议建立连接的时候需要双方相互确认信息,来防止连接被伪造和精确控制整个数据传输过程数据完整有效。所以TCP协议采用三次握手建立一个连接。 第一次握手: 建立连接时,客户端发送syn包到服务器,并进入SYN_SEND状态,等待服务器确认 第二次握手: 服务器收到syn包,必须确认客户的SYN 同时自己也发送一个SYN包即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手: 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 SYN攻击利用TCP协议三次握手的原理,大量发送伪造源IP的SYN包也就是伪造第一次握手数据包,服务器每接收到一个SYN包就会为这个连接信息分配核心内存并放入半连接队列,如果短时间内接收到的SYN太多,半连接队列就会溢出, 操作系统 会把这个连接信息丢弃造成不能连接,当攻击的SYN包超过半连接队列的最大值时,正常的客户发送SYN数据包请求连接就会被服务器丢弃

windows2003 最大连接数限制

一个人想着一个人 提交于 2019-12-23 20:44:30
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 这是 因为Windows 2003中设置了最大允许连接数限制,而你每次连接后可能没有注销而是直接关闭,导致连接数超过了最大连接数。你可以在Windows 2003 服务器上通过组策略中设置一下来解决问题:单击“开始→运行”,输入“gpedit.msc”,回车后打开组策略窗口,然后依次定位到“计算机配置→管理 模板→终端服务→会话”,然后在右侧窗口中双击“为断开的会话设置时间限制”,在打开的窗口中将“结束断开连接的会话”时间设置为5分钟。最好的解决方法 还是你每次断开连接时通过注销的方式。 来源: oschina 链接: https://my.oschina.net/u/554046/blog/291338

JedisPoolConfig的配置

我的梦境 提交于 2019-12-23 18:20:37
JedisPoolConfig config = new JedisPoolConfig(); //连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true config.setBlockWhenExhausted(true); //设置的逐出策略类名, 默认DefaultEvictionPolicy(当连接超过最大空闲时间,或连接数超过最大空闲连接数) config.setEvictionPolicyClassName("org.apache.commons.pool2.impl.DefaultEvictionPolicy"); //是否启用pool的jmx管理功能, 默认true config.setJmxEnabled(true); //MBean ObjectName = new ObjectName("org.apache.commons.pool2:type=GenericObjectPool,name=" + "pool" + i); 默 认为"pool", JMX不熟,具体不知道是干啥的...默认就好. config.setJmxNamePrefix("pool"); //是否启用后进先出, 默认true config.setLifo(true); //最大空闲连接数, 默认8个 config.setMaxIdle(8); //最大连接数,

too many connections 解决方法

Deadly 提交于 2019-12-23 05:30:47
too many connections 解决方法 show variables like ‘%max_connections%’; set GLOBAL max_connections=2000; show global variables like ‘wait_timeout’; set global wait_timeout=300; set global interactive_timeout=500; 今天突然在做一个本地项目,突然数据库连接不上了。用的是workbeach ,过了一会查到了,是最大连接数到了。 转载原为地址:https://blog.csdn.net/qq_31454017/article/details/71108278 mysql -u root -p 回车输入密码进入mysql show processlist; 查看连接数,可以发现有很多连接处于sleep状态,这些其实是暂时没有用的,所以可以kill掉 show variables like “max_connections”; 查看最大连接数,应该是与上面查询到的连接数相同,才会出现too many connections的情况 set GLOBAL max_connections=1000; 修改最大连接数,但是这不是一劳永逸的方法,应该要让它自动杀死那些sleep的进程。 show