我们遇到一个问题,当我们启用 memcache(在 nginx Web 服务器上)时,会话会从 Magento 1.10 中随机消失。
我们在 Magento 中设置 cookie 过期时间似乎并不重要,由于某种原因,会话在一小时内的任何随机时间都会消失。
如果我们关闭内存缓存,它就可以正常工作。
我们最终将需要多个服务器连接到一个基于会话的缓存解决方案,因此 memcache 似乎是唯一的选择。此外,我们现在仅在内存缓存中缓存会话,当我检查内存缓存统计信息时,我们远未接近阈值限制。
这是内存缓存设置local.xml
:
<cache>
<type>memcached</type>
<path/>
<servers>
<localhost>
<host><![CDATA[127.0.0.1]]></host>
<port><![CDATA[11211]]></port>
<persistent><![CDATA[1]]></persistent>
</localhost>
</servers>
</cache>
<session_save><![CDATA[memcache]]></session_save> <!-- db / memcache / empty=files -->
<session_save_path><![CDATA[tcp://localhost:11211?persistent=0&weight;=2&timeout;=10&retry;_interval=10]]></session_save_path>
<session_cache_limiter><![CDATA[private]]></session_cache_limiter>
整个事情的困难部分是,当会话在一小时内消失时,很难重现。有时在一分钟之内,有时45...
我们这里有几个人在多个虚拟服务器系统中的所有不同浏览器中进行了尝试(以消除冲突),他们似乎都清楚同样的时间。
现在逻辑表明,有一个进程正在刷新内存缓存,但我不知道如何测试它,如果我这样做了,如何知道是什么清除了它。我查看了 Magento 代码,但找不到任何看起来像是清除此内容或从内存缓存中删除会话的内容。
但我确实发现,会话消失后,“前端”cookie 仍保留在浏览器上,当我签入内存缓存板时,cookie 就消失了。
并非所有键/值都从内存缓存中消失,在本例中只是其中一部分。我的和另外两三个人由于某种原因完全失踪了。
现在,我要问的是,不仅有人遇到过这个问题,而且有人对尝试什么有任何其他想法吗?
我一直在使用(著名的)memcache.php 文件来监视服务器上的 memcache 系统。我可以尝试其他想法/应用程序吗?