首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NGINX + phpFPM负载均衡器和会话

NGINX + phpFPM负载均衡器和会话
EN

Stack Overflow用户
提问于 2016-09-04 10:03:01
回答 1查看 668关注 0票数 4

我有一个问题,我正在使用nginxPHPFPM。我正在使用2 phpfpm服务器的负载平衡器。

为了保持来自两个phpfpm服务器的会话同步,我使用了memcached。但是当我使用memcached时,我看到页面正在减慢

当我使用文件作为会话保存类型时, web运行得更快,但是会话不是临时同步的(我猜文件是写的)。我正在使用NFS共享会话。

当使用nginx负载平衡器用于phpfpm服务器时,请提供任何想法来同步会话?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-04 10:34:28

您可能在PHP中看到的使用的速度增长本质上是一个欺骗性的增长。PHP会话存储默认以先到先得的方式锁定获取。这意味着为同一个会话向PHP发出的两个并发请求将导致第一个请求锁定会话,直到PHP完成或您从代码中显式调用session_write_close()来释放锁。

但是在基于文件的会话存储中,PHP依赖于flock,这在NFS中不起作用。

NFS (版本2和3)协议不支持文件锁定。 See this answer on unix stackexchange

因此,对于分布式会话存储,很少需要基于慢文件系统的锁。无论如何,大多数内存存储的工作速度都更快。而且,由于NFS通常无法处理flock调用,如果两个并发请求试图写入同一个会话文件,您的会话就会损坏。换句话说,您所看到的更快的只是您的请求可能会更快地破坏它们的会话,因为没有锁定会话的并发性。

如果您的请求花费了很长时间,并且不需要会话,那么最好在会话完成后尽早显式地调用代码中的session_write_close,这样任何其他并发请求都可以到达会话。当您对PHP执行大量长轮询请求(例如AJAX)时,这通常是一个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39315745

复制
相关文章

相似问题

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