在启动 golang 时创建默认数量的数据库连接
create a default number of db connections at startup golang
我希望一些空闲的数据库连接在应用程序启动时始终存在。
我在Golang中只能看到MaxIdleConns
和MaxOpenConns
。
我没有看到任何 setMinIdle
功能。
感谢帮助。
要针对您的问题的主要部分,您可以迭代确定的次数并在将您的应用程序标记为已启动之前向您的数据库发出并行请求。 (例如 k8s 就绪探测)。
一般来说,在为连接池配置选择配置时,需要考虑的事情很少:
- 默认情况下,打开连接数没有限制,因此如果出现某些错误或传入请求的意外大量涌入,可能会对数据库产生影响。这就是为什么应该设置
SetMaxOpenConns
.
- 如果人脉长存,那也不是最好的情况。因为它们占用内存和数据库资源。所以 - 设置
SetMaxIdleConns
,记住,它的默认值是 2.
生产级设置的常见做法是将数据库连接池设置为对 MaxOpenConns
有限制,这取决于每秒的预期请求数、工作人员数量和数据库配置。至于 MaxIdleConns
— 它应该设置为 MaxOpenConns 的一小部分,考虑设置您对同时请求的分散度的期望。像 MaxOpenConns 的 25% 或 50%。
我希望一些空闲的数据库连接在应用程序启动时始终存在。
我在Golang中只能看到MaxIdleConns
和MaxOpenConns
。
我没有看到任何 setMinIdle
功能。
感谢帮助。
要针对您的问题的主要部分,您可以迭代确定的次数并在将您的应用程序标记为已启动之前向您的数据库发出并行请求。 (例如 k8s 就绪探测)。
一般来说,在为连接池配置选择配置时,需要考虑的事情很少:
- 默认情况下,打开连接数没有限制,因此如果出现某些错误或传入请求的意外大量涌入,可能会对数据库产生影响。这就是为什么应该设置
SetMaxOpenConns
. - 如果人脉长存,那也不是最好的情况。因为它们占用内存和数据库资源。所以 - 设置
SetMaxIdleConns
,记住,它的默认值是 2.
生产级设置的常见做法是将数据库连接池设置为对 MaxOpenConns
有限制,这取决于每秒的预期请求数、工作人员数量和数据库配置。至于 MaxIdleConns
— 它应该设置为 MaxOpenConns 的一小部分,考虑设置您对同时请求的分散度的期望。像 MaxOpenConns 的 25% 或 50%。