【问题标题】:Distributed file system for application cache and logs用于应用程序缓存和日志的分布式文件系统
【发布时间】:2016-07-05 17:25:18
【问题描述】:
我在单个服务器上有一个 php symfony 应用程序,并使用不同节点上的 docker 进行水平扩展。所以在这里我想使用一个集群文件系统来进行缓存和日志来集中它并安装到 docker 容器上。
我使用 glusterfs 实现了这一点,并与一位运行良好的用户进行了测试。但是随着负载的增加,应用程序下降并且响应时间增加,有时用户会得到白屏。我删除了 glusterfs 并使用了本地文件系统,这提高了应用程序的性能,并且没有看到在重负载时响应时间有任何增加。由此,我认为 glusterfs 作为用于存储缓存和日志的集群文件系统并不是一个好的选择。
那么问题是,是否有其他文件系统会降低应用程序的性能?
谢谢。
【问题讨论】:
标签:
symfony
caching
filesystems
distributed
glusterfs
【解决方案1】:
正如您所发现的,将 Symfony 缓存和日志放在共享 FS 上确实是个坏主意。
本地FS是去那里的方式。不过,如果您使用多服务器配置,有一些建议:
- 确保会话存储在其他地方,memcached 或 Redis 是 IMO 的最佳选择。文件会话是 PHP 的瓶颈
- 最坏的情况,如果您必须坚持使用文件会话,请使您的服务器 IP 平衡(nginx 中的“会话粘性”)。否则用户将被断开连接。
- 从日志文件转移到集中式记录器,最好通过 UDP(非阻塞)进行
- Symfony 缓存的某些部分可以移出 FS,以获得更好的性能:Doctrine 可以使用不同类型的缓存(memcache 再次,APCu...),Symfony 基本反向代理可以替换为 Varnish。李>
我看不出还有什么要说的,还有什么要问的?