如何为 SFTP 事务(由 Drupal 制作,如果这很重要)启用密码登录,同时为所有其他基于 SSH 密钥的身份验证禁用它?目前CentOS服务器的所有现有用户都使用密钥登录并且/etc/ssh/sshd_config有PasswordAuthentication no
)?
我们在 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 本身中启用。