php - 在同一 docker-machine 中的多个 docker 容器之间共享 PHP OPcache
问题描述
我正在对 laravel 堆栈应用程序进行 dockerizing。
我有一个app
正在运行的服务php-fpm
,其中包含 laravel 源代码。
我想复制这项服务,这样我就可以从高可用性和零停机时间功能中受益。
我不知道如何处理 OPcache:
- 我应该在每个容器中运行 opache 优化
app
吗?如果是这样,这种方法会保留大量服务器的内存 - 有没有办法
app
在同一台 docker 机器上的服务任务(容器)之间共享 opcache? - 假设这是可能的,这种方法是纠正这类问题还是被认为是反模式?
解决方案
每当脚本编译时,该进程都会检查 PHP OPcode 缓存并在共享内存中找到已编译的代码。如果找不到代码,则自动启动编译并将其保存到内存生成输出之后。
所以现在我们可以根据上面的 Opcache 流程来讨论你的问题
我应该在每个应用程序容器中运行 opcache 优化吗?如果是这样,这种方法会保留大量服务器的内存
是的,您应该在每个容器中运行 OpCache,因为每个容器都在自己的空间上运行,第二件事它将节省大量容器内存,否则如果没有 OpCache,您的容器将在负载过重的情况下无法响应。
Both tests reported about 50% decrease in response time after installing OpCache.
opcache-configuration-to-avoid-caching-suprises
有没有办法在同一台 docker 机器上的应用服务的任务(容器)之间共享 opcache?
第一件事一个容器不能在没有高权限的情况下访问另一个容器的内存,为此你需要额外的配置,第二件事应该避免这样做,容器被设计为独立运行并管理每个容器的单个进程(经验法则) .
假设这是可能的,这种方法是纠正这类问题还是被认为是反模式?
不,在 Docker 容器中它不鼓励并且容器应该解耦。
一般来说,解耦架构是一个复杂工作的框架,它允许组件保持完全自主并且不知道彼此。云计算有时被称为具有解耦架构,因为云提供商管理物理基础设施,而不是托管在其上的应用程序或数据。
推荐阅读
- c++ - 获取 HWND 非主监视器
- c - 在c linux中的套接字编程中连接被拒绝
- javascript - 使用应用脚本的无限倒数计时器
- flutter - 为什么AppBar的automaticImplyLeading没有效果?
- javascript - 如何在双击时重命名列表但将图标保留在其旁边
- laravel - Windows 10 Apache 虚拟主机下的 Laravel 8 存储文件夹问题
- notepad++ - notepad ++ - 在每个单词中找到用户定义的语言“如果”
- pytorch - GAN 模型总结 Pytorch 使用 TensorBoard?
- r - 如何在不复制基础数据的情况下从 Eigen::Tensor 创建 Rcpp NumericVector
- python - XML解析Python(需要指定3个标签和1个属性时)