我有关于 session 的性能问题, 我正在使用以下组件 1. MongoDB 作为我的应用数据库 2. MySQL 作为我的分析数据库 3. Memcache减少对MongoDB的调用
我的应用程序基于 Amazon 服务器、安装在独立实例上的 MongoDB、RDS 上的 MySQL 以及安装在独立实例上的应用程序本身。
我尝试删除 MongoDB 和 MySQL 之间的 session 处理,发现 MongoDB 具有更好的性能,但仍然很慢。
我听说过 Elastic Cache,但我不确定这是合适的解决方案,我想知道 Amazon 中 session 处理的最佳实践是什么。
顺便说一句,我的代码是用 PHP 编写的,我的客户端是 flash。
谢谢。
最佳答案
您的问题没有正确答案,因为应用程序中的变量太多,无法声明一个明显的最佳实践。以下是您应该考虑的一些注意事项:
- 更仔细地分析现有解决方案的性能,以便在切换到新选项之前更好地了解您遇到的问题的性质。如果正确配置和扩展,MongoDb 在许多情况下应该足够快以满足您的需求。很难解决它在 StackOverflow 上表现不佳的原因(然后可能更适合另一个 StackExchange 网站)。我已经阅读了有关您选择的任何数据库的配置建议。您可能会发现理想设置的成本超出了您的预算。
- 如果您管理自己的数据库服务器,则应考虑购买预配置 IOP,以帮助确保磁盘 IO 水平一致。例如,这将显着影响 MongoDb 的性能。
- 考虑与预算相比您需要什么样的性能
- 尽量减少 session 数据的大小。不幸的是,开发人员通常将其视为廉价的神奇数据桶,并且没有意识到 session 提供程序在一般意义上的工作方式的本质。磁盘 IO 将比 RAM 慢。
- 缓存更多,在 session 中放置更少。例如,如果需要,请在 session 中保留用户的绝对基础知识,但例如将详细信息放在 Memcached 中。
- 如果使用内存支持的缓存并且缓存失败或重新启动,请确定您需要哪种类型的弹性。如果您选择了一个非磁盘支持的选项并且 session 存储在那里,如果您的用户需要再次登录,他们可能会在此回收期间不高兴。
- AWS 团队强烈建议您考虑将 DynamoDb 作为 session 提供程序的后盾。您基本上可以购买所需的性能。它并不便宜,但您购买的是一项非常强大的服务。
- 使用 Elastic Cache 可能是一种选择。虽然 Memcached 选项在发生故障(数据丢失)时不提供 session 弹性,但具有主/从和多 AZ 选项的 Redis 选项可能会满足您的需求。
关于php - 亚马逊平台上的最佳实践 session 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20091728/