【问题标题】:Very slow queries between server and database in dockerdocker中服务器和数据库之间的查询非常慢
【发布时间】:2021-01-25 16:00:07
【问题描述】:

我正在尝试使用 docker compose 设置一些集成测试。我正在使用 docker compose 来启动 postgres 数据库和 nodejs 服务器。然后我使用 jest 对服务器运行 http 请求。

由于某些原因,我无法解释所有 SQL 查询(即使是最简单的查询)都非常慢(+ 1 秒)。

这听起来像是两个容器之间的通信问题,但我无法发现它。我是不是做错了什么?

这是我的docker-compose.yml 文件。服务器只是一个简单的快递应用

version: "3.9"
services:
  database:
    image: postgres:12
    env_file: .env
    volumes:
      - ./db-data:/var/lib/postgresql/data
    healthcheck:
      test: pg_isready -U test_user -d test_database
      interval: 1s
      timeout: 10s
      retries: 3
      start_period: 0s
  server:
    build: .
    ports:
      - "8080:8080"
    depends_on:
      database:
        condition: service_healthy
    env_file: .env
    environment:
      POSTGRES_HOST: database
      NODE_ENV: test
    init: true
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/healthcheck"]
      interval: 1s
      timeout: 10s
      retries: 3
      start_period: 0s

编辑 我正在使用

Docker version 20.10.2, build 2291f61
macOs BigSur 11.1 (20C69)

【问题讨论】:

  • 1.你能对不同版本的postgresql进行测试吗?例如。尝试 postgres:13 或 postgres:11 只是为了测试。 2.你提到node.js:它是哪个版本?我们遇到了 14 + postgresql 的问题。可以试试12吗? 3. 只有来自 node.js 或其他地方的查询才慢?
  • @AlexYu 我发现了这个问题,它不在 docker 中,而是在 postgres 客户端中。感谢您的帮助

标签: node.js postgresql docker


【解决方案1】:

通过更改以下内容尝试对数据文件夹使用 Volume 而不是 Bind Mount:

- ./db-data:/var/lib/postgresql/data

到这里:

- db-data:/var/lib/postgresql/data

并将此部分添加到撰写文件的末尾:

volumes: 
    db-data:

您可以阅读有关绑定挂载与卷的更多信息here

【讨论】:

  • (如果这确实是问题所在 - 并且可能是 - 另请参阅 Docker in MacOs is very slow 了解其他解决方法。)
  • 感谢您的回答,但这并不能解决我的问题。我还尝试添加链接中指出的:delegated,但它也不起作用
  • 这对我有很大影响,非常感谢!
【解决方案2】:

我找到了。问题不在于 docker,而在于编译器。我正在使用ncc,它破坏了我的 postgres 客户端。

我在他们的 repo 中打开了一个问题,并使用了一个最小的可重现示例

https://github.com/vercel/ncc/issues/646

非常感谢您的帮助

【讨论】:

  • 嗯。有趣的。我们在使用普通 pg + 节点 12 的组合时遇到了问题(但我们不使用 ncc)。实际上,由于slonik 是建立在pg 之上的,所以即使组合ncc+pg 也可能会出现同样的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-28
  • 1970-01-01
  • 2017-04-10
  • 1970-01-01
  • 2018-09-11
  • 1970-01-01
  • 2017-02-07
相关资源
最近更新 更多