北京医院网站建设,网站理念,网站建设设计猫和老鼠,慈溪市住房和城乡建设局网站参考官方描述#xff1a; 如果spring使用以下mongodb的配置#xff0c;则默认是没有连接池的
spring:data:mongodb:host: 地址port: 27017database: 数据库名username: 账号password: 密码 每隔一两分钟没有去请求的话就会断开连接重连#xff0c;每次都要等待5-10秒之间才…参考官方描述 如果spring使用以下mongodb的配置则默认是没有连接池的
spring:data:mongodb:host: 地址port: 27017database: 数据库名username: 账号password: 密码 每隔一两分钟没有去请求的话就会断开连接重连每次都要等待5-10秒之间才重新连接上请求速度很慢这一点确实非常不友好。出现这种问题就是maxIdleTimeMS时间太长缩短每次连接删除和关闭之前保持的空闲状态等待时间就可以避免这个问题但也会造成连接池的频繁连接和关闭。每次打开和关闭控制台打印如下提示
Closed connection [connectionId{localValue:11, serverValue:1607}] to xxx.cc:27017 because there was a socket exception raised by this connection.
Opened connection [connectionId{localValue:21, serverValue:1623}] to xxx.cc:27017
所以mongodb的配置就尽量不要用上面的方式来配需要使用uri的方式来去配不需要在java代码中去写配置类不需要在java代码中去写配置类不需要在java代码中去写配置类。
spring:data:mongodb:uri: mongodb://数据库账号:数据库密码数据库地址:27017/数据库名称?connectTimeoutMS10000socketTimeoutMS10000maxPoolSize10000minPoolSize10maxIdleTimeMS1000readPreferenceprimaryretryWritestrue
uri的前半部分注意符号格式是固定 mongodb://数据库账号:数据库密码数据库地址:27017/数据库名称 uri的后半部分是一些额外配置选项使用 ? 这个问号进行标识分割每一个配置选项之间使用 符号来衔接。 ?connectTimeoutMS10000socketTimeoutMS10000 maxPoolSize1000minPoolSize10maxIdleTimeMS10000 readPreferenceprimaryretryWritestrue connectTimeoutMS 在超时之前尝试连接的时间以毫秒为单位。默认值为 10000 毫秒但特定驱动程序可能具有不同的默认值socketTimeoutMS 在尝试超时之前尝试在套接字上发送或接收的时间以毫秒为单位。默认值为永不超时尽管不同的驱动程序可能会有所不同maxPoolSize连接池中的最大连接数。默认值为 。100minPoolSize 连接池中的最小连接数。默认值为 。0 maxIdleTimeMS 连接在删除和关闭之前可以在池中保持空闲状态的最大毫秒数。 并非所有驱动程序都支持此选项。 readPreference指定此连接的读取首选项。retryWrites启用可重试写入。需要特别注意maxIdleTimeMS这个时间的设置多次测试证实了:超过设置的指定时间后所有线程池的空闲线程连接会被自动关闭关闭后所有线程池空闲线程会重新连接
参数配置根据你们需求来 我只是给出个示例 更多参数选项参考地址 测试连接断开后控制台日志如下已经开启指定数量的线程池无误