首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在memcache数组上分配php会话负载

在memcache数组上分配php会话负载
EN

Server Fault用户
提问于 2011-07-15 05:51:26
回答 1查看 496关注 0票数 2

直到最近,我们的设置还包括4个web服务器,将会话共享到一个运行memcache的服务器上。我们在亚马逊云上托管,连续两天在负载高峰时崩溃。问题是memcache服务崩溃了(我们站点的负载一直在稳步增加)。

因此,我们采取了以下措施:

1)增加了2台用于存储会话的服务器

2)在所有web服务器上的php ini文件中设置以下变量

代码语言:javascript
复制
session.save_handler = memcache

session.save_path = tcp://ip1.port, tcp://ip2.port, tcp://ip3:port

memcache.hash_strategy = consistent

memcache.allow_failover = 1

现在一切都井然有序。为了确保可用性,我们尝试通过随机关闭一个会话服务器来进行测试,并且站点继续运行(一些用户被注销了,这在业务上是可以接受的)。

但有一个大问题。我预计memcache服务器上的负载大致是均匀分布的。但事实并非如此!

如果我看看CloudWatch中的“(Bytes)”,那么我可以看到负载大约是10:5:1的比例。换句话说,就网络带宽而言,第一台服务器的负载是第三台服务器的10倍。第二台服务器的负载是第三台服务器的5倍。

有什么想法吗?

EN

回答 1

Server Fault用户

发布于 2012-01-11 14:56:28

session.save_path参数更改memcache IP的顺序可能会改变memcache服务器上的会话分布比率。例如,在第一个web服务器上:

代码语言:javascript
复制
session.save_path = tcp://ip1.port, tcp://ip2.port, tcp://ip3:port

在第二个web服务器上:

代码语言:javascript
复制
session.save_path = tcp://ip2.port, tcp://ip3.port, tcp://ip1:port

在第三个web服务器上:

代码语言:javascript
复制
session.save_path = tcp://ip3.port, tcp://ip1.port, tcp://ip2:port

在第四个web服务器上:

代码语言:javascript
复制
session.save_path = tcp://ip1.port, tcp://ip3.port, tcp://ip2:port
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/290619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档