与 Redis 和 Memcached 的 PHP 会话导致应用程序速度变慢

问题描述 投票:0回答:1

我正在以高可用性使用我的应用程序,为此我将 Redis 配置为会话管理器。

Redis 安装在同一网络上的自己的服务器上,但我注意到,当 PHP 应用程序有多个 AJAX 请求时,需要更长的时间。 大约 11 个请求总共需要大约 10 秒才能完成。

如果我将 PHP 与本机会话一起使用,则 11 个请求将在不到 400 毫秒的时间内完成。 认为问题出在 Redis 上,我决定将 Memcached 配置为会话管理器,再次在其自己的服务器上,但同样的问题再次出现。

如何解决此问题并获得更快的会话管理?

php session redis memcached
1个回答
0
投票

这听起来好像您仍然有粘性会话处于活动状态,并且不在同一主机上的所有内容都涉及网络,这看起来很慢。因此,负载均衡器中的粘性会话将使您更快地进行会话管理,并且应该可以解决此问题。

然而,这只是一个选项。可能您不再有“粘性会话”,因此对本地文件使用会话处理程序会出现竞争条件(但速度更快)。那么网络基础会话处理程序变慢的解释不是因为网络,而是因为锁定有效并且会话不会被破坏。 可能是第二种情况,但你应该更清楚,我没有见解。

因此,如果您想在不同的轴上处理它:请注意 PHP 中的会话是锁定的。您通常希望将其作为默认值,但如果您深入研究该主题,您可能会发现一些更有用的信息。

这里有一个现有的问答,详细介绍了它:

PHP 和会话:有没有办法禁用 PHP 会话锁定? 其中概述的一种方法是区分读取和写入请求。只读请求不需要一直阻塞(也许)。请参阅此处以获得更好的解释和更详细的讨论。

© www.soinside.com 2019 - 2024. All rights reserved.