我正在以高可用性使用我的应用程序,为此我将 Redis 配置为会话管理器。
Redis 安装在同一网络上的自己的服务器上,但我注意到,当 PHP 应用程序有多个 AJAX 请求时,需要更长的时间。 大约 11 个请求总共需要大约 10 秒才能完成。
如果我将 PHP 与本机会话一起使用,则 11 个请求将在不到 400 毫秒的时间内完成。 认为问题出在 Redis 上,我决定将 Memcached 配置为会话管理器,再次在其自己的服务器上,但同样的问题再次出现。
如何解决此问题并获得更快的会话管理?
这听起来好像您仍然有粘性会话处于活动状态,并且不在同一主机上的所有内容都涉及网络,这看起来很慢。因此,负载均衡器中的粘性会话将使您更快地进行会话管理,并且应该可以解决此问题。
然而,这只是一个选项。可能您不再有“粘性会话”,因此对本地文件使用会话处理程序会出现竞争条件(但速度更快)。那么网络基础会话处理程序变慢的解释不是因为网络,而是因为锁定有效并且会话不会被破坏。 可能是第二种情况,但你应该更清楚,我没有见解。
因此,如果您想在不同的轴上处理它:请注意 PHP 中的会话是锁定的。您通常希望将其作为默认值,但如果您深入研究该主题,您可能会发现一些更有用的信息。
这里有一个现有的问答,详细介绍了它:
PHP 和会话:有没有办法禁用 PHP 会话锁定? 其中概述的一种方法是区分读取和写入请求。只读请求不需要一直阻塞(也许)。请参阅此处以获得更好的解释和更详细的讨论。