Drupal内建有数据缓存,但是当资料库效能无法负荷时,可以利用memcached这个模组来减轻资料库的负担
在第一次访问网站时将资料库档案放入Memcached中,第二次浏览后使用者浏览时PHP会先询问Memcached中是否有资料,有的话就从记忆体中抓取并显示资料,没有的话才对资料库抓取资料
Memcached内存:依照预先定义的固定大小将内存分配成各种大小的区块,并把相同大小的集合在一起
就像是切蛋糕一样,把页面切成不同大小的bytes放置在不同的区块中进行保存
Step.1 安装必要模组
apt-get update
apt-get upgrade -y
sudo apt-get install memcached libmemcached-tools
sudo apt-get install php5-memcached
sudo apt-get install php5-dev php-pear make
sudo pecl install memcache
Step.2 编辑php.ini
sudo nano /etc/php5/fpm/php.ini
在Memcache.ini跟php.ini里加入这行
extension =" memcache.so"
memcache.hash_strategy = "consistent"
Setp.3 更改memcached.conf
如果我们可以给Memcached更多记忆体,将会增加效能系统预设是16MB 建议配置1/4的可用记忆体
sudo nano /etc/memcached.conf
# Change this default value to ~ 1/4 of your total
# available RAM -m 16
完成设定以后重新启动memcached restart 跟apache or nginx
sudo /etc/init.d/memcached restart
sudo /etc/init.d/apache2 restart
service nginx restart
用 netstat 觀看 memcached 是不是在執行
sudo netstat -tap | grep memcached
正常的话应该是localhost:11211 系统预设是使用11211 这个Port
tcp 0 0 localhost:11211 *:* LISTEN 25266/memcached
Setp.4 Drupal 下载模组与设定
移动到drupal 安装路径 安装memcache 模组
cd/drupal安装路径
drush dl memcache
drush en memcache
安装完成以后利用文字编辑器编辑sites/default/settings.php 设定档
在settings.php 里新增以下几行
$conf['cache_backends'][] = 'sites/all/modules/memcache/memcache.inc'; 注意路径要设定成memcache模组所在的路径
$conf['cache_default_class'] = 'MemCacheDrupal';
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';
$conf['memcache_key_prefix'] = $_SERVER['HTTP_HOST'] ;
如果是多网站安装的话请在每个settings.php中加入以下
$conf [ 'memcache_key_prefix' ] = 'unique_key' ;
Setp.5 Drupal 模组启用
在模组页面中开启Memcache跟Memcache admin
开启网站报告确认是否有错误讯息
如果显示You should update your pecl memcache version at least up to 2.0.1
这类的错误讯息,请至https://www.drupal.org/project/memcache
下载最新的memcache跟跟memcached压缩档,放置到sites/all/libraries中就可以解决错误讯息
报告选单中选择Memcache statistics有显示报告的话表示安装成功
Setp.6 Memcache 图表
安装完成之后,可以使用memcache_status模组进行监控
利用drush进行安装
drush en memcache_status
drush en libraries
并下载下面这个函式库 http://pecl.php.net/package/memcache
解压缩放置到sites/all/lib底下将memcache.php 更名为 memcache.php.inc
然后进行编辑
$MEMCACHE_SERVERS[] = 'mymemcache-server1:11211'; // add more as an array 修改成 $MEMCACHE_SERVERS[] = '127.0.0.1:11211'; // add more as an array
IPr就是Memcache statistics上显示的IP位置跟Port
参考资料
1. How to install memcached on Ubuntu for use with Drupal
2. Running Drupal on Nginx with Memcached
3. How to Install Memcached For Drupal 7
来自 https://www.hellosanta.com.tw/Drupal%E7%B6%B2%E7%AB%99%E8%A8%AD%E8%A8%88/drupal-memcached