2010-12-14 70 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。但是我還沒有使用它。