mysql 超过了连接数据 too many connections

jingzi

问题描述

我这边有五十个物联网项目,架构上使用了分库管理和GatewayWorker框架,因为要求数据实时性高,
所以采用了异步任务去处理,防止堵塞,比如我开启50个异步任务进程。会出现一个项目每个进程new 一次数据库连接。越多项目就越多连接数,这个有什么好的办法吗?

797 3 2
3个回答

aspire

使用连接池

  • jingzi 2024-07-15

    swoole 的连接池吗? 主要我用了tp 的Db 类,改用Db类改动有点大,项目已上线了。

  • mark 2024-07-15

    改用连接池也会出现你的问题。除非你不用太多的进程。数据库也有上千个链接吧,你都用完了,那只能升级配置了。不然你 就少一点进程数,某写进程 处理数据。

  • jingzi 2024-07-15

    好的‘那只能开几个mysql 专用进程了,像这种架构,项目一旦多起来,没法避免

  • czf 2024-07-16

    配置主从库,读写分离

小W

数据库最大连接数有限制的,不能超过,及时关闭链接

  • jingzi 2024-07-19

    谢谢建议,不过架构是频繁更新数据库的,关闭连接再连接。msyql 开销太大

walkor
  • jingzi 2024-07-24

    好的,老大我试试,减少异步任务进程不可行。比如我 20个项目 10个进程,会满满的出现堵塞问题

  • jingzi 2024-07-24

    大佬,还有个问题请教,use 是改变当前进程选择的数据库,如果2个项目连接在同一个进程,第一个项目任务没执行完,第二项目的任务进来了,更改了数据库,会不会导致错乱啊。

  • walkor 2024-07-25

    进程里项目是串行的,同一个进程里不会出现第一个任务没执行完,就执行第二个任务的情况

  • jingzi 2024-07-25

    明白

  • mark 2024-08-05

    楼主解决了没

  • jingzi 2024-08-08

    解决了,现在就是观察 可能会频繁切换数据库的性能响应大不大了。

  • mark 2024-08-08

    怎么解决的呢?

  • jingzi 2024-08-12

    就老大贴的解决方案啊,现在运行十几天了。没出现什么问题

×
🔝