我这边有五十个物联网项目,架构上使用了分库管理和GatewayWorker框架,因为要求数据实时性高, 所以采用了异步任务去处理,防止堵塞,比如我开启50个异步任务进程。会出现一个项目每个进程new 一次数据库连接。越多项目就越多连接数,这个有什么好的办法吗?
使用连接池
swoole 的连接池吗? 主要我用了tp 的Db 类,改用Db类改动有点大,项目已上线了。
改用连接池也会出现你的问题。除非你不用太多的进程。数据库也有上千个链接吧,你都用完了,那只能升级配置了。不然你 就少一点进程数,某写进程 处理数据。
好的‘那只能开几个mysql 专用进程了,像这种架构,项目一旦多起来,没法避免
配置主从库,读写分离
数据库最大连接数有限制的,不能超过,及时关闭链接
谢谢建议,不过架构是频繁更新数据库的,关闭连接再连接。msyql 开销太大
参考 https://www.workerman.net/q/13019
好的,老大我试试,减少异步任务进程不可行。比如我 20个项目 10个进程,会满满的出现堵塞问题
大佬,还有个问题请教,use 是改变当前进程选择的数据库,如果2个项目连接在同一个进程,第一个项目任务没执行完,第二项目的任务进来了,更改了数据库,会不会导致错乱啊。
进程里项目是串行的,同一个进程里不会出现第一个任务没执行完,就执行第二个任务的情况
明白
楼主解决了没
解决了,现在就是观察 可能会频繁切换数据库的性能响应大不大了。
怎么解决的呢?
就老大贴的解决方案啊,现在运行十几天了。没出现什么问题
使用连接池
swoole 的连接池吗? 主要我用了tp 的Db 类,改用Db类改动有点大,项目已上线了。
改用连接池也会出现你的问题。除非你不用太多的进程。数据库也有上千个链接吧,你都用完了,那只能升级配置了。不然你 就少一点进程数,某写进程 处理数据。
好的‘那只能开几个mysql 专用进程了,像这种架构,项目一旦多起来,没法避免
配置主从库,读写分离
数据库最大连接数有限制的,不能超过,及时关闭链接
谢谢建议,不过架构是频繁更新数据库的,关闭连接再连接。msyql 开销太大
参考 https://www.workerman.net/q/13019
好的,老大我试试,减少异步任务进程不可行。比如我 20个项目 10个进程,会满满的出现堵塞问题
大佬,还有个问题请教,use 是改变当前进程选择的数据库,如果2个项目连接在同一个进程,第一个项目任务没执行完,第二项目的任务进来了,更改了数据库,会不会导致错乱啊。
进程里项目是串行的,同一个进程里不会出现第一个任务没执行完,就执行第二个任务的情况
明白
楼主解决了没
解决了,现在就是观察 可能会频繁切换数据库的性能响应大不大了。
怎么解决的呢?
就老大贴的解决方案啊,现在运行十几天了。没出现什么问题