【发布时间】: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