数据库连接池有两个最重要的配置:最小连接数和最大连接数,它们控制着从连接池中获取连接的流程:

    如果当前连接数小于最小连接数,则创建新的连接处理数据库请求;
    如果连接池中有空闲连接则复用空闲连接;
    如果空闲池中没有连接并且当前连接数小于最大连接数,则创建新的连接处理请求;
    如果当前连接数已经大于等于最大连接数,则按照配置中设定的时间(C3P0 的连接池配置是 checkoutTimeout)等待旧的连接可用;
    如果等待超过了这个设定时间则向用户抛出错误。

    一般在建议最小连接数控制在 10 左右,最大连接数控制在 20~30 左右即可。

    ……