2010-12-14 46 views
0

我有一个关于Memcache和会话锁定用户会话的问题。 我要锁定或做一些事情,这将阻止用户会话线程干扰......内存一致性||线程干扰|| Php

我们有一个情况,像这样:

如果服务器是在最大,用户被重定向到“免费”的服务器,但这一点的一些数据是错误的...

所以有没有人有任何sugestions:?

+0

我不确定你是什么意思,但如果你负载平衡的服务器,你需要共享他们之间的会话。您应该在memcache或数据库中设置您的会话。我知道你正在使用memcache会话吗?如果是的,那有什么问题? – Fanis 2010-12-14 09:27:29

+0

会话被加载到memcache中,问题在于数据的一致性,一些数据很少以错误的值存储。我不知道为什么:/ – xyz 2010-12-14 15:42:00

回答

0

您的所有Memcached服务器都必须在您的app/etc/local.xml文件中列出,并且对于每个服务器都是相同的,这样他们将共享会话数据。

或者 - 或者另外 - 更好的负载平衡策略将是“一致的哈希”。用户将平均分布在可用的服务器上,并且每个用户将由相同的服务器处理,并因此处理相同的会话。

+0

服务器在local.xml中列出 嗯...我想我会尝试“一致的哈希”... – xyz 2010-12-14 15:42:40

+0

一致的策略在这种情况下不起作用... – xyz 2010-12-15 09:47:45

+0

对不起听说。我真的认为它可以帮助。 – clockworkgeek 2010-12-15 11:50:04

0

如果您想要将您的会话分布到多个服务器上,我建议使用一致性散列,因为它可以减少添加/删除服务器时丢失的数量。

Memcached不支持锁定,但我相信新的memcached模块有一个解决方法,它提供了support for locking。但是我还没有使用它。