在WordPress和MySQL前面的Nginx反向代理很慢

时间:2017-07-08 00:53:54

标签: php mysql wordpress nginx proxy

我有以下设置:

1个4核/ 8 HT(Intel Xeon E3-1231 v3)服务器,带32GB RAM和2TB HDD 我已经在上面安装了Proxmox。然后我创建了一些KVM:

  1. Nginx反向代理 - 公共IP 192.168.0.10,内部IP 10.10.10.10

    • IP仅用于示例目的,实际IP不同
  2. 仅为静态内容网站提供服务的Nginx - 仅限内部IP 10.10.10.20

  3. 服务于WordPress的Nginx + PHP-FPM - 仅内部IP 10.10.10.30

  4. MySQL - 仅内部IP 10.10.10.40

  5. 所有服务器都通过内部网络进行通信。 "滞后"是0.200ms - 0.350ms

    我还有2个网站:

    1. example.com - 通过A记录指向Nginx反向代理的公共IP 192.168.0.10

    2. wp.example.com - 通过A记录指向Nginx反向代理的公共IP 192.168.0.10

    3. Nginx反向代理配置为根据在浏览器中输入的网站对请求进行代理传递。

      当您尝试加载example.com时NGINX反向代理将连接传递到内部IP 10.10.10.20,其中另一个nginx为html网站提供服务 - example.com

      到目前为止一切顺利。一切都很好。

      然而,当有人试图输入wp.example.com时,会出现问题,NGINX反向代理将连接传递给IP 10.10.10.30,其中另一个nginx + php-fpm提供php文件。

      到目前为止一直很好,但我已经安装了WordPress并使用MySQL服务器,该服务器是在另一个IP 10.10.10.40的KVM上安装的。好。一切正常,但是与MySQL服务器之间的连接似乎很慢,因为整个wordpress网站加载速度太慢。如果只提供php文件(没有任何mysql查询),网站加载速度超快,但是当安装WordPress时,它会连接到另一台服务器上的数据库,并且事情开始变慢......

      所有机器都没有高负荷。他们有很多免费的CPU,磁盘空间和RAM。但是由于某种原因MySQL(MariaDB 10.2.6)是这里的瓶颈......但我不知道为什么......

      这是我的NGINX反向代理的conf文件:

      server  {
          listen  80;
          server_name example.com www.example.com;
          location / {
              proxy_pass http://10.10.10.20:80/;
          }
      }
      server {
          listen 80;
          server_name wp.example.com www.wp.example.com;
          location / {
              proxy_pass http://10.10.10.30:80/;
          }
          proxy_set_header X-Forwarded-Host $host;
          proxy_set_header X-Forwarded-Server $host;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header Host $host;
      }
      

      这是来自我的KVM服务器的nginx conf文件,它为PHP网站提供服务 - WordPress:

      server {
          listen       10.10.10.30:80;
          server_name  wp.example.com www.wp.example.com;
          root   /var/www;
          index index.php index.html index.htm;
          location / {
               try_files $uri $uri/ =404;
          }
          error_page 404 /404.html;
          error_page 500 502 503 504 /50x.html;
          location = /50x.html {
               root /usr/share/nginx/html;
          }
          location ~ \.php$ {
               try_files $uri =404;
               fastcgi_pass unix:/run/php-fpm/php-fpm.sock; 
               fastcgi_index index.php;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               include fastcgi_params;
          }
      }
      

      我怎么能麻烦为什么WordPress加载太慢?服务器之间没有数据包丢失,我认为连接也很好......服务器之间只有0.200 - 0.350毫秒......

      我认为发生缓慢是因为WordPress尝试连接外部地址,但作为wordpress"生活的服务器"没有公共互联网连接,这会减慢事情......我不确定这是不是因为......但可能是这样?

2 个答案:

答案 0 :(得分:0)

我想到了一些事情:

  1. 你是如何从wordpress连接到mysql服务器的? wp-config.php文件)?
  2. 您使用的是IP地址还是DNS?
  3. 你是直接连接到mysql服务器还是有一个proxysql? 中间?
  4. 您使用ssl连接到mysql吗?
  5. 您是否在mysql服务器上做了基准测试,并确定它可以从远程wp服务器获取多少查询?
  6. mysql服务器是否使用SSD?硬盘会很慢......
  7. 您是否调整了my.cnf文件,或者您使用的是默认设置?
  8. 同一区域内的mysql和wp服务器是否位于同一区域内?
  9. 对于mysql,我建议删除mariadb并安装Percona。 你也可以从那里生成一个新的my.cnf:https://tools.percona.com/

    我最近也安装了MariaDB 10.2,并想知道为什么它比10.1慢得多......而且percona为我解决了这个问题。

答案 1 :(得分:-1)

以下是您的问题的答案:

  1. 我在wp-config.php
  2. 中通过IP连接到MySQL
  3. IP
  4. 我直接连接到MySQL,这里没有使用代理。
  5. 不,我没有使用SSL作为MySQL服务器"生活"在具有专用网络的隔离KVM中
  6. 不,我不是......可以将我推荐给导游吗?
  7. MySQL使用HDD,但它只有一个默认的WordPress数据库,只有几个连接,因为我是唯一一个打开我的网站...
  8. 我现在使用my.cnf中的默认值
  9. MySQL服务器和WordPress服务器位于同一个Proxmox节点上,它们是同一个Proxmox节点内的KVM机器
  10. 我已经完成了一些测试,看起来只有WP的一些部分很慢: 从管理区域导航到插件菜单 从管理区域导航到主题菜单

    当我登录管理区域时......它很慢......

    我认为这与互联网连接的缺乏有关...只有私人网络......