1、mysql连接数_MySQL配置参数优化
1.1、优化最大连接数max_connections
是MySQL最大并发连接数默认值是151
MySQL允许的最大连接数上限是32767
实际连接数是最大连接数的85%较为合适
查询数据库目前设置的最大并发连接数是多少
查询数据库目前实际连接的并发数是多少
在MySQL配置文件 /etc/my.cnf 中设置 max_connections=3000,表示修改最大连接数为3000,需要重启MySQL才能生效
MySQL为每个连接创建缓冲区,所以不应该盲目上调最大连接数,如果最大连接数达到了上面设置的3000,会消耗大约800M内存。
1.2、优化请求堆栈back_log是存放执行请求的堆栈大小
默认值是50
该值设置为最大并发连接数的20%~30%较为合适
同样是在MySQL配置文件 /etc/my.cnf 中,设置 back_log=600,修改后需要重启MySQL才能生效
1.3修改并发线程数innodb_thread_concurrency代表并发线程数
默认是0,表示没有设置线程数量的上限。
不是分配给MySQL的线程越多越好,线程多反而会损耗cpu性能,导致速度变慢并发线程数应该设置为cpu核心数的两倍
在在MySQL配置文件 /etc/my.cnf 中,设置 innodb_thread_concurrency=8
查看cpu型号
查看cpu核心数
1.4 修改连接超时时间wait-timeout是超时时间
单位是秒
连接默认超时为8小时,连接长期不用又不销毁,浪费资源
设置超时时间为10分钟 wait-timeout=600
1、Mybatics 连接池配置
<environments default="default"><environment id="default"><transactionManager type="JDBC"/><dataSource type="C3P0"><!-- oracle --><!-- <property name="driver" value="oracle.jdbc.OracleDriver"/><property name="url"
value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>--><!-- mysql --><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://127.0.0.1:3306/test"/><property name="username" value="test"/><property name="password" value="123456"/><property name="acquireIncrement" value="3"/> <!-- 连接不足时每次申请个数 --><property name="minPoolSize" value="10"/> <!-- 连接池最小连接数 --><property name="maxPoolSize" value="30"/> <!-- 连接池最大连接数 --><property name="maxIdleTime" value="3600"/> <!-- 空闲连接等待1h后关闭 --><property name="maxIdleTimeExcessConnections" value="600"/> <!-- 连接池超过最小连接数的空闲连接将在10m后关闭 --><property name="checkoutTimeout" value="20000"/> <!-- 从连接池取连接若连接不足时,最长等待20s后超时 --><property name="automaticTestTable" value="JDBCTestTable"/> <!-- 自动检测连接指定表名,请检查username是否有数据库写权限(若无请自己创建该测试表,表内容为空) --><property name="idleConnectionTestPeriod" value="300"/> <!-- 守护线程每隔300s检测空闲连接有效性 --><property name="testConnectionOnCheckin" value="false"/> <!-- 是否在归还连接时检测连接有效性 --></dataSource></environment></environments>
maxActive是最大激活连接数,这里取值为20,表示同时最多有20个数据库连接。maxIdle是最大的空闲连接数,这里取值为20,表示即使没有数据库连接时依然可以保持20空闲的连接,而不被清除,随时处于待命状态。MaxWait是最大等待秒钟数,这里取值-1,表示无限等待,直到
超时为止,也可取值9000,表示9秒后超时。