首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有可能拥有与wordpress服务器安装相同的性能的dockerized化wordpress?

有没有可能拥有与wordpress服务器安装相同的性能的dockerized化wordpress?
EN

Stack Overflow用户
提问于 2021-01-22 01:57:19
回答 2查看 191关注 0票数 0

我正在试验一个wordpress docker安装。我对挂载的卷使用了基本安装。

docker-compose.yml

代码语言:javascript
运行
复制
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?

EN

回答 2

Stack Overflow用户

发布于 2021-01-22 02:13:26

运行docker几乎没有任何成本。最大的区别在于网络层,但主机联网减少了这一点。成本并不像你想象的那样多。

什么是docker

简而言之,docker只不过是进程和资源的隔离。所有进程都在没有任何虚拟化的情况下在主机上运行。有一些linux模块负责隔离资源和进程。模块示例:

内核中的

Docker使用它来限制容器的CPU和内存使用。更多信息在这里:https://docs.docker.com/config/containers/resource_constraints/

这是Docker.

  • iptables使用的内核的另一个重要特性-- Iptables通常用于定义网络层。这可能是Docker面临的最大瓶颈。

IBM在2014年的调查

几年前,IBM在这里对这个话题做了一些调查:https://dominoweb.draco.res.ibm.com/reports/rc25482.pdf

您可以找到Docker NAT networking的网络延迟:

但让我们看看另一个图表,它显示了Redis的延迟。你可以看到,对于network=host,docker几乎和本地主机一样快。

调试

我们不能说你的部署出了什么问题,因为图片太大了,而你只提供了照片的一小部分。

但是,您可以自己开始调试。

  1. 在新实例上创建另一个EC2 Prometheus
  2. 在WordPress实例上安装节点导出器。这将导出Prometheus
  3. Configure instance
  4. Optionally的度量,以便从您的Wordpress Prometheus收集度量。在普罗米修斯服务器上安装Grafana。
  5. 请等待一天来收集数据并分析您遇到的问题。

要安装Prometheus,请使用Prometheus Get Start Docs

要安装node_exporter并设置普罗米修斯刮板,请使用以下文档:https://prometheus.io/docs/guides/node-exporter/

摘要

所以你问题的答案是:这取决于你的应用程序是如何部署到docker上的。可能有几件重要的事情会影响你的表现。

container

  • Memory的CPU限制container

  • Networking类型的限制

  • 缺少部署在同一主机上的应用程序的

  • 其他限制,如最大打开文件数、虚拟内存限制、容器内进程数等...
票数 0
EN

Stack Overflow用户

发布于 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和我的,它在插件上运行的很好:

代码语言:javascript
运行
复制
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中,这可能会改善您的性能状况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65833152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档