自动扩展服务器上的PHP会话

(抱歉与SO交叉发帖,我不知道哪里更合适。)

我正在开发部署到Amazon Web Services的PHP Web应用程序。 我们在自动扩展的应用服务器之前有负载平衡器。

我们目前面临的问题是处理会议。 虽然粘性会议是一个合理的解决scheme,但我们希望持续很长一段时间(理想情况下)。 这可能会损害负载平衡器的性能。 此外,使用自动缩放将意味着,我们将不时地删除服务器,从而失去所有活动会话。 当然,我们可以使用通用的数据库来存储会话,但是如果每个请求都需要另外的往返数据库的话,我会关心性能。

如果您能提出任何适合您的解决scheme,或者我们可以尝试的任何想法,我将不胜感激。

在此先感谢您的帮助,Ross

PHP以纯文件格式存储会话。 你有没有尝试将它们存储在一个共同的存储?

类似的问题: 在云文件系统中共享PHP会话

这里是关于这个特定的问题和不同的方法的文章: http : //kevin.vanzonneveld.net/techblog/article/enhance_php_session_management/

IME,使用基于文件的会话和数据库会话之间几乎没有任何开销(上次我详细地看了这个,我在3个mysql节点上使用了master / master复制) – 但是后者通常需要额外的networking访问访问一个本地的mysql实例,与仅有本地文件系统相比,这个差别是不可测量的)。 将基于数据库的存储扩展到共享存储库也是一件简单的事情,因为它是一个简单的键/值方法,所以在nosql数据库上实现是比较简单的 – 比关系数据库更容易扩展。

在其他人链接的文章中已经提到过了,但是它们分开重复:Memcache在这里是一个非常有用的选项。 它非常快速,能够轻松扩展到多个Memcache服务器/实例,并且非常容易实现,而不会在数据库上产生大量开销或负载。 我已经成功地在一个每天点击数百万次的网站上以最小的努力实现了这一点,并且在现有的硬件上给了更多的增长空间。

这样做也允许使用Memcache自己的老化策略,而不是让PHP的会话垃圾收集器运行。