当前位置: 首页 > 知识库问答 >
问题:

mysql连接池如何与节点微服务配合使用?

沈皓君
2023-03-14

我有两个节点的微服务与一个常见的mysql数据库通信。两个微服务都有以下代码来创建连接池,连接限制为10,如下所示:

//初始化池

var pool = mysql.createPool({
  connectionLimit: 10,
  host: 'localhost',
  port: '3306',
  user: 'root',
  password: 'root'
});

function addConnection(req, res) {
  pool.getConnection(function (err, connection) {
    if (err) {
      connection.release();
      res.json({ "code": 500, "status": "Error" });
      return;
    }

    connection.query("select * from user", function (err, rows) {
      connection.release();
      if (!err) {
        res.json(rows);
      }
    });

    connection.on('error', function (err) {
      res.json({ "code": 500, "status": "Error" });
      return;
    });
  });
}

对于mysql数据库,我将max_connections设置为200(显示“max_connections”之类的变量;返回200)。

  1. 对于每个微服务,池连接限制设置为10,在哪些情况下,任何微服务的连接数都会超过10?i、 e.节点服务何时以及如何能够维持比预期更多的连接

共有1个答案

程谦
2023-03-14

>

  • 理想情况下,它不会;但是它可以超过10;如果假设一些连接变得过时,即它们从客户端关闭,但在服务器端仍然打开。

    如果您在多个VM或docker容器中部署了相同微服务的多个实例;它们就像独立的服务...因此,它们中的每一个都将创建自己的10个连接。

    首先,如果你将连接池限制设置为10;这并不意味着在第一个时刻将创建10个连接。当创建池时;您还指定初始连接参数假设5...因此,当服务启动时,将只创建5个连接...并且仅在需要时才创建更多...回到你的问题;如果你没有正确地实现同步等,那么是的,两个池都有可能初始化它们的INITIAL_CONNECTIONS。

  •  类似资料:
    • 我正在用node编写一个小的Web应用程序。js MySQL,不知道哪一个是连接池的更好选择。到目前为止,我发现了两种选择:从节点mysql进行连接池(https://github.com/felixge/node-mysql#pooling-连接)以及节点mysql通用池(https://github.com/coopernurse/node-pool).两者似乎都有相同的作用,我只是想知道你是

    • 使用nestjs 构建了一个微服务,java 如何连接.

    • 我有(假设)以下服务器为我的应用程序;我的工作与MySQL。 1) 应用程序使用的数据库(服务器位于日本) 2)数据库备份(服务器位于秘鲁) 3)紧急数据库(服务器位于美国) 关于Spring的功能,我有几个问题: A) 如何在所有数据源中同时持久化? 如何在Spring中创建连接池,以便如果我的第一个数据源没有响应,系统会自动与第二个数据源一起工作? 这是我实际的 问候

    • 我正在使用spring boot spring cloud spring JDBC为单片应用程序开发微服务。目前,应用程序正在通过tomcat JNDI连接池连接到单个数据库。 我们在这里遇到了一个瓶颈,由于各种原因,比如大量的数据库对象、与其他系统的紧密依赖性等,目前无法更改数据库体系结构。 因此,我们基于应用程序特性隔离了微服务。我担心的是,如果我们开发的微服务每个都有自己的连接池,那么到数据

    • 我们正在尝试将我们的单片应用程序转换为基于微服务的体系结构。我们使用Postgresql作为单一应用程序中的数据库之一,并使用BoneCP进行连接池。 当这个整体被拆分为多个独立的微服务,每个服务都运行在不同的JVM中时,我可以考虑两种连接池选项 BoneCP或任何适合每个微服务的连接池-我的初步研究表明,这是主要选择。可以对每个服务的连接需求进行细粒度控制。但是,不利的一面是,随着服务数量的增加

    • 我在我的k8s上部署了一个mysql pod。这是配置,我对端口感到困惑,比如: @问题1。谁代理这个端口@问题2。这个端口是什么?我的意思是容器已经暴露了端口3306,服务也暴露了。在我的单个节点中,这些不冲突吗?@问题3。这个端口对容器暴露的端口意味着什么? 问题4:当我使用方式1部署此功能时。如何从pods访问mysql服务器 问题5:当我用方式2部署这个时。如何从pods访问mysql服务