我正在试验一个wordpress docker安装。我对挂载的卷使用了基本安装。
docker-compose.yml
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- ./mysql:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8001:80"
restart: always
volumes:
- ./html:/var/www/html
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
但是在添加了几个插件和一个主题之后,wp-admin变得非常慢。大约5-7秒TTFB使用elementor基本上是不可能的。
在服务器上扔硬件(这是一个亚马逊网络服务的EC2)并没有改变性能。
有没有可能在一个高性能的docker设置中使用wordpress?
发布于 2021-01-22 02:13:26
运行docker几乎没有任何成本。最大的区别在于网络层,但主机联网减少了这一点。成本并不像你想象的那样多。
什么是docker
简而言之,docker只不过是进程和资源的隔离。所有进程都在没有任何虚拟化的情况下在主机上运行。有一些linux模块负责隔离资源和进程。模块示例:
内核中的
Docker使用它来限制容器的CPU和内存使用。更多信息在这里:https://docs.docker.com/config/containers/resource_constraints/
这是Docker.
IBM在2014年的调查
几年前,IBM在这里对这个话题做了一些调查:https://dominoweb.draco.res.ibm.com/reports/rc25482.pdf
您可以找到Docker NAT
networking的网络延迟:
但让我们看看另一个图表,它显示了Redis的延迟。你可以看到,对于network=host
,docker几乎和本地主机一样快。
调试
我们不能说你的部署出了什么问题,因为图片太大了,而你只提供了照片的一小部分。
但是,您可以自己开始调试。
Prometheus
Prometheus
收集度量。在普罗米修斯服务器上安装Grafana。要安装Prometheus
,请使用Prometheus Get Start Docs
要安装node_exporter并设置普罗米修斯刮板,请使用以下文档:https://prometheus.io/docs/guides/node-exporter/
摘要
所以你问题的答案是:这取决于你的应用程序是如何部署到docker上的。可能有几件重要的事情会影响你的表现。
container
发布于 2021-01-22 02:38:51
首先:您可能应该使用mysql:latest
标记。5.7现在是一个较旧的数据库,最新版本是8.0.23 (社区服务器)。
第二:你应该指定wordpress的版本和php的版本,并在此过程中保持更新。我使用image: wordpress:5.6-php7.4-apache
,它为我提供了php7以获得更好的性能。
在docker-compose.yml中进行更改后,运行docker-compose up --build
以确保获得所有内容的干净版本。
您的docker-compose版本可以从3.3升级到3.8 (但与性能无关)。
确保将Docker安装升级到最新版本(目前为19.03+)。
比较你的docker-compose和我的,它在插件上运行的很好:
version: "3.8"
services:
db:
image: mysql:latest
command: "--default-authentication-plugin=mysql_native_password"
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:5.6-php7.4-apache
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
WORDPRESS_CONFIG_EXTRA: |
define('WP_DEBUG', true);
error_reporting(E_ALL);
ini_set('display_errors', 1);
working_dir: /var/www/html
volumes:
- ./wp-content:/var/www/html/wp-content
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
volumes:
db_data: {}
请注意,我使用working_dir
是为了正确设置docker容器的目录。通过将wp-content添加到卷中,您可以将wp-content复制到容器中以持久化它。插件位于wp-content中,这可能会改善您的性能状况。
https://stackoverflow.com/questions/65833152
复制相似问题