AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 387457
Accepted
Gnudiff
Gnudiff
Asked: 2012-05-10 05:56:06 +0800 CST2012-05-10 05:56:06 +0800 CST 2012-05-10 05:56:06 +0800 CST

如何使用远程数据库(不是 DNS 解析)加速 Drupal 7

  • 772

我们在 Ubuntu LTS 虚拟机 (VMWare) 上安装了 Drupal 7,在同一台物理服务器上安装了 MySQL 5.1 服务器,但在不同的虚拟机上。

Drupal 网站目前正在开发中,因此几乎没有流量,但是,尽管 ping 和 shell 访问速度快如闪电,但 Drupal 网站运行速度非常慢(>5 秒加载任何页面)。在这里和其他地方进行研究后,我了解到问题在于 SQL 是通过网络接口访问的,而 Drupal 显然做得非常糟糕。

我已经检查了 DNS 解析,Drupal 端(db 主机由 ip 给出,/etc/hosts 文件中有一个 dns 条目)和 MySQL 端(skip-name-resolve 已打开,drupal 客户端是通过 ip 地址授予访问权限)。

Drupal 开发查询日志说:

在 5993.89 毫秒内执行了 336 次查询。超过 5 毫秒的查询会突出显示。页面执行时间为 7015.35 毫秒。使用的内存:devel_boot()=5.53 MB,devel_shutdown()=93.35 MB,PHP peak=94 MB。

奇怪的是,对于单个页面加载,大约 2/3 的查询速度很快,其他的则非常慢:

1.765 DrupalDatabaseCache::getMultipleP A E
SELECT cid, data, created, expire, serialized FROM cache_bootstrap WHERE cid IN (:cids_0)
default
575.825 DrupalDatabaseCache::getMultipleP A E
SELECT cid, data, created, expire, serialized FROM cache_bootstrap WHERE cid IN (:cids_0)
default
13.585 DrupalDatabaseCache::getMultipleP A E
SELECT cid, data, created, expire, serialized FROM cache_bootstrap WHERE cid IN (:cids_0)
default
466.9914 DrupalDatabaseCache::getMultipleP A E
SELECT cid, data, created, expire, serialized FROM cache WHERE cid IN (:cids_0)
default
1.841 drupal_lookup_pathP A E
SELECT source FROM url_alias WHERE alias = :alias AND language IN (:language, :language_none) ORDER BY language ASC, pid DESC
default

通过启用 Drupal 缓存可以纠正匿名访问的情况。然而,整个管理界面仍然很慢。

目前的公司政策是单独拥有数据库服务器。是否有任何其他选项可以加快 Drupal 的速度?

默认数据库配置显示驱动程序“mysql”,也许我应该将其更改为“mysqli”或“pdo_mysql”?但是,如果我将它更改为 mysqli,database.inc 会抱怨相关的驱动程序不存在——任何专门为 drupal 安装的驱动程序,因为 mysqli 和 pdo 都在 PHP 本身中启用。

mysql networking remote slow-connection drupal7
  • 5 5 个回答
  • 2169 Views

5 个回答

  • Voted
  1. Oliver
    2012-05-10T11:59:43+08:002012-05-10T11:59:43+08:00

    我认为您可以在两个方面优化您的网站:

    1. 通过调整 MySQL 数据库减少单个查询。我将从mysqltuner.pl开始,它会向您显示明显的安装问题并提供调整提示。
    2. 减少查询次数。我知道一个大型 Drupal 安装是在 Web 服务器主机上使用内存缓存完成的。

    您是否检查过 drupal.org上的管理站点性能?

    • 0
  2. Bonn
    2012-12-23T16:51:22+08:002012-12-23T16:51:22+08:00

    我遇到了同样的问题,并使用 Google Chrome PageSpeed 和 YSlow 来找出我的问题。

    基本上,我正在执行以下这些步骤:

    尝试安装PHP APC,将 APC shm 大小设置为 256Mb(有很多指南)。然后确保Apache 的KeepAlive开启,并且也激活 Apache 压缩(通过 Apache mod_deflate)。

    • 0
  3. alexus
    2014-07-17T05:45:38+08:002014-07-17T05:45:38+08:00

    您可以做很多事情:

    • 调整mysqldwith的性能/etc/my.cnf:
      • major/MySQLTuner-perl · GitHub
      • Launchpad 中的 MySQL 调优入门脚本
    • 启用缓存:
      • PECL :: 封装 :: APC
      • memcached - 分布式内存对象缓存系统
      • 清漆社区 | Varnish 让网站飞起来!

    尝试探索以下内容:

    • Drupal 组 | 在 Drupal 和 Drupalcamps 上聚会、讨论、计划和工作
    • Drupal 答案
      • 高性能 | Drupal 群组
    • 0
  4. sridhar pandurangiah
    2017-11-18T02:59:48+08:002017-11-18T02:59:48+08:00

    我怀疑是没有足够的内存让 PHP 运行。检查memory_limitPHP.INI 文件。将其更改为 -1(无限内存)以查看性能是否有所提高。如果没有,那么您将长期处于困境。以下是我发表的关于提高 Drupal 性能的文章的链接

    1. 调整 LAMP 堆栈以提高 Drupal 的性能
    2. 提高 Drupal 站点的性能
    • 0
  5. Best Answer
    Gnudiff
    2017-11-18T04:22:22+08:002017-11-18T04:22:22+08:00

    由于这个问题还在招人回答,我就自己回答吧,因为我当时算是解决了。

    基本上,只要我将 Mysql 移动到与 Drupal 相同的 vm,一切都变得快如闪电。所以问题是 Drupal 为每个页面加载发出的大量 sql 查询 = 糟糕的架构。

    • 0

相关问题

  • 开源与专有关系 db mgt 系统的优缺点是什么?

  • 在 solaris 10 上为 mysql 设置 max_allowed_pa​​cket

  • 如何移动 MySQL 的数据目录?

  • 通过 VPN 连接什么是远程服务器 IP?

  • mysql崩溃

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve