【发布时间】:2012-11-14 18:13:37
【问题描述】:
我使用 Scalr.net 在 AWS 上设置了一个集群。我正在运行 Magento CE 1.7:
- 1 Nginx 负载均衡服务器
- 2 个 Apache Web 服务器
- 1 个数据库服务器
- 1 个 Memcached 服务器
目的是将文件缓存和会话缓存存储在 memcached 服务器上。我已经这样设置了magento local.xml:
<session_save><![CDATA[memcache]]></session_save>
<session_save_path><![CDATA[tcp://XX.XX.XX.XX:11211?persistent=1&weight=2&timeout=10&retry_interval=10]]></session_save_path>
<session_cache_limiter><![CDATA[]]></session_cache_limiter>
<cache>
<backend>memcached</backend>
<slow_backend>database</slow_backend>
<slow_backend_store_data><![CDATA[]]></slow_backend_store_data>
<auto_refresh_fast_cache><![CDATA[]]></auto_refresh_fast_cache>
<lifetime>259200</lifetime>
<backend_options>
<servers>
<server>
<host><![CDATA[XX.XX.XX.XX]]></host>
<port><![CDATA[11211]]></port>
<persistent><![CDATA[0]]></persistent>
<weight><![CDATA[2]]></weight>
<timeout><![CDATA[10]]></timeout>
<retry_interval><![CDATA[10]]></retry_interval>
<status><![CDATA[1]]></status>
</server>
</servers>
<compression><![CDATA[0]]></compression>
</backend_options>
</cache>
但 Memcached 无法正常工作。这是我的统计数据:
root@ec2-XX.XX.XX.XX:~# telnet ip-XX.XX.XX.XX 11211
Trying XX.XX.XX.XX...
Connected to ip-XX.XX.XX.XX.ec2.internal.
Escape character is '^]'.
stats
STAT pid 1086
STAT uptime 79364
STAT time 1352912987
STAT version 1.4.2
STAT pointer_size 64
STAT rusage_user 2.340000
STAT rusage_system 0.000000
STAT curr_connections 5
STAT total_connections 11
STAT connection_structures 6
STAT cmd_get 0
STAT cmd_set 0
STAT cmd_flush 0
STAT get_hits 0
STAT get_misses 0
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT bytes_read 28
STAT bytes_written 2194
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT bytes 0
STAT curr_items 0
STAT total_items 0
STAT evictions 0
END
此外,该网站会引发以下错误:
a:4:{i:0;s:29:"cache_dir must be a directory";i:1;s:1097:"#0 /var/www/includes/src/Zend_Cache_Backend_File.php(154): Zend_Cache::throwException('cache_dir must ...')
#1 /var/www/includes/src/Zend_Cache_Backend_File.php(121): Zend_Cache_Backend_File->setCacheDir('')
#2 /var/www/includes/src/__default.php(60504): Zend_Cache_Backend_File->__construct(Array)
#3 /var/www/includes/src/__default.php(60445): Zend_Cache::_makeBackend('File', Array, true, true)
#4 /var/www/includes/src/Mage_Core_Model_Cache.php(124): Zend_Cache::factory('Varien_Cache_Co...', 'File', Array, Array, true, true, true)
#5 /var/www/includes/src/__default.php(23463): Mage_Core_Model_Cache->__construct(Array)
#6 /var/www/app/Mage.php(462): Mage_Core_Model_Config->getModelInstance('core/cache', Array)
#7 /var/www/includes/src/__default.php(20134): Mage::getModel('core/cache', Array)
#8 /var/www/includes/src/__default.php(20028): Mage_Core_Model_App->_initCache(Array)
#9 /var/www/includes/src/__default.php(20070): Mage_Core_Model_App->baseInit(Array)
#10 /var/www/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#11 /var/www/index.php(87): Mage::run('', 'store')
#12 {main}";s:3:"url";s:1:"/";s:11:"script_name";s:10:"/index.php";}
如果我在后端选项中包含以下内容:
<cache_dir><![CDATA[]]></cache_dir>
<hashed_directory_level><![CDATA[]]></hashed_directory_level>
<hashed_directory_umask><![CDATA[]]></hashed_directory_umask>
<file_name_prefix><![CDATA[]]></file_name_prefix>
您的帮助将不胜感激。谢谢。
【问题讨论】:
-
您是否尝试过从 /admin/cache 刷新缓存存储?
-
你是对的。它现在可以工作,但有两个问题。 1. 添加到购物车时,添加到购物车重置为 0 件,2,我需要清除 /var/session 吗?
-
尝试清除 /var/session 和 /tmp/magento/ .... 但很抱歉,我在使用 memcached 进行会话存储时遇到了很多问题;你描述的这个问题就是其中之一。我最终选择将 session 存储在 MySQL 中,因为 db 本身有很大的空间,而且通常不是 Magento 的瓶颈。
-
由于会话问题,我也无法再登录管理员。我已清除 /var/cache /var/session 和 /tmp/magento 但没有成功。
-
我会为 cache_dir 和 file_name_prefix 添加一个值,例如 cache_dir 将其设置为“production/cache”和 file_name_prefix “production_”
标签: magento session caching memcached scalr