【问题标题】:Laravel + docker-compose + external db, very low performanceLaravel + docker-compose + 外部数据库,性能非常低
【发布时间】:2017-11-02 16:42:25
【问题描述】:

有一个项目由三个容器组成:

  • web-nginx
  • app - php (laravel 5.4)
  • db - mysql (5.7)

出于稳定性考虑,我打算将数据库迁移到aws。 测试表明,应用程序在传输到 aws 期间的加载时间增加了数倍。似乎对数据库的每个请求都是与数据库的连接。

api-call 执行如下操作:

$mycustomer = $customer->find($id);
$mycustomer = $this->getCustomerFooData($mycustomer);
$mycustomer = $this->getCustomerBarData($mycustomer);
...
...
return $mycustomer;

接受:

  • 容器 1200 毫秒;
  • aws 64000 毫秒

(微时间(真))

带有数据库容器的 Docker-compose.yml:

version: '2.0'
services:
  web:
    container_name: my_web
    build:
      context: ./
      dockerfile: web.docker
    volumes:
      - ./:/var/www
    ports:
      - "8040:80"
    links:
      - app
    networks:
      - portrouter_default
  app:
    container_name: my_app
    build:
      context: ./
      dockerfile: app.docker
    volumes:
      - ./:/var/www
    links:
      - database
    networks:
      - portrouter_default
    environment:
      - "DB_PORT=3306"
      - "DB_HOST=database"
  database:
    container_name: my_db
    image: mysql:5.7
    networks:
      - portrouter_default
    environment:
        - „MYSQL_ROOT_PASSWORD=password"
        - „MYSQL_DATABASE=dbname"
    ports:
        - "33063:3306"
networks:
  portrouter_default:
    external: true

不带数据库容器的 Docker-compose.yml:

version: '2.0'
services:
  web:
    container_name: my_web
    build:
      context: ./
      dockerfile: web.docker
    volumes:
      - ./:/var/www
    ports:
      - "8040:80"
    links:
      - app
    networks:
      - portrouter_default
  app:
    container_name: my_app
    build:
      context: ./
      dockerfile: app.docker
    volumes:
      - ./:/var/www
    networks:
      - portrouter_default
networks:
  portrouter_default:
    external: true

.env 数据库容器:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=33063
DB_DATABASE=dbname
DB_USERNAME=user
DB_PASSWORD=pass

.env aws:

DB_CONNECTION=mysql
DB_HOST=xxxxx.rds.amazonaws.com
DB_PORT=33063
DB_DATABASE=dbname
DB_USERNAME=user
DB_PASSWORD=pass

有人遇到过这个问题吗? 提前致谢!

【问题讨论】:

    标签: laravel performance amazon-web-services docker-compose amazon-rds


    【解决方案1】:

    从本地主机到 AWS 比从本地主机到本地主机慢是正常的。如果您想验证真实性能,您应该将应用部署到 AWS,将其连接到 RDS,然后验证真实性能。

    【讨论】:

    • 好的,谢谢!我明天测试一下。但是如果我不想在 aws 上部署应用程序怎么办? AWS 提供的此类其他根服务器和数据库。这种情况没有解决办法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 2020-07-08
    • 1970-01-01
    • 2019-02-25
    相关资源
    最近更新 更多