[eggjs/egg]egg项目使用egg-sequlize,如何控制应用级别的数据库连接池大小

2025-11-04 125 views
3

项目在egg-scripts情况下,启动,是分多个进程启动的,如果数据库连接池配置的是pool{max:5},在linux平台启动的话,如果是32核的,就等于是最大连接池大小就是32*5=160,连接池大小相当于是进程级别的,如何设置应用级别的,因为团队要求每个应用级别的连接池不能超过10个,所以想问一下这个要怎么设置应用级别的连接池

回答

4

没有办法设置应用级别的连接数,node.js 多进程模型下就会这样。 每个应用级别的连接池不能超过10个 这个要求看起来就不太合理。

5

我们同一个数据库有前端的node工程链接,后端的java工程也会链接,多工程链接同一个数据库,如果每个的的max设置的稍微大一些,node这里因为是进程级别的,进程级别的总连接池一下子就会拉的很大,这样就会出现too many connection导致应用起不来

4

现在node工程只部署在了一台机器上,如果是3台机器同时部署,pool设置max: 5, 等同于最大是 3 32 5 = 480

9

Node 进程间是没办法共享的。

话说单机没必要起 32 个那么多 worker 吧,我们一般一个 docker 就 2~4 个进程(未来是单进程)。

9

如何控制单机起几个worker?这个目前是egg底层根据cpu的核数自动启的,我们的服务器目前是32核的,那么就在我们上面起了 32个worker + 1个master + 1个agent

2

@atian25 @dead-horse 谢谢大大们的回复,我这边先把pool 的max给设置小一些,来避免too many connection

4

如何控制单机起几个worker?这个目前是egg底层根据cpu的核数自动启的,我们的服务器目前是32核的,那么就在我们上面起了 32个worker + 1个master + 1个agent

egg-scripts 有个 --workers 的参数

8

恩恩,好的,谢谢,希望egg越来越好,团队成员都棒棒的