线程池原理
先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,
当处理完这个请求后,线程又处于睡眠状态。
数据库连接池原理
数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并讲这些连接组成一个连接池(简单说:在一个“池”里放了好多半成品的数据库联接对象),由应用程序动态地对池中的连接进行申请、使用和释放。对于多于连接池中连接数的并发请求,应该在请求队列中排队等待。并且应用程序可以根据池中连接的使用率,动态增加或减少池中的连接数。
当并发数大于mysql的最大连接数时,程序会出现报错。
show variables like ‘%max_connections%’; //查看允许连接的最大连接数
show global status like ‘Max_used_connections’; //mysql以往响应的最大连接数(实际达到的最大连接数)
max_used_connections / max_connections * 100% (理想值≈ 85%) //理想值
通常不会高于2*CPU核心数
设置mysql的最大连接数:
在my.cnf里的[mysqld]下方添加max_connections=512,重启后生效