簡體   English   中英

在同一 docker-machine 中的多個 docker 容器之間共享 PHP OPcache

[英]share PHP OPcache between multiple docker containers in the same docker-machine

我正在對接 laravel 堆棧應用程序。

我有一個名為app的服務,它運行php-fpm ,其中包含 laravel 源代碼。
我想復制這項服務,這樣我就可以從高可用性和零停機時間功能中受益。

我不知道如何處理 OPcache:

  1. 我應該在每個app容器中運行 opache 優化嗎?如果這樣,這種方法會保留大量服務器的 memory
  2. 有沒有辦法在同一台 docker 機器上的app服務的任務(容器)之間共享 opcache?
  3. 假設這是可能的,這種方法是糾正這類問題還是被認為是反模式?

每當腳本編譯時,該進程都會檢查 PHP OPcode 緩存並在共享 memory 上找到已編譯的代碼。 如果找不到代碼,則自動啟動編譯並將其保存到 memory 生成 output 之后。

在此處輸入圖像描述

集成-php-opcache

所以現在我們可以根據上面的 Opcache 流程來討論你的問題

我應該在每個應用程序容器中運行 opcache 優化嗎? 如果是這樣,這種方法會保留大量服務器的 memory

是的,您應該在每個容器中運行 OpCache,因為每個容器都在自己的空間上運行,第二件事它將節省大量容器 memory 否則如果沒有 OpCache,您的容器將在負載過重的情況下無法響應。

Both tests reported about 50% decrease in response time after installing OpCache.

opcache-configuration-to-avoid-caching-suprises

有沒有辦法在同一台 docker 機器上的應用服務的任務(容器)之間共享 opcache?

第一件事一個容器無法訪問另一個沒有高權限的容器的 memory,為此您需要額外的配置,第二件事應該避免這樣做,容器被設計為獨立運行並管理每個容器的單個進程(經驗法則) .

假設這是可能的,這種方法是糾正這類問題還是被認為是反模式?

不,在 Docker 容器中,它不鼓勵並且容器應該解耦。

一般來說,解耦架構是一個復雜工作的框架,它允許組件保持完全自主並且不知道彼此。 雲計算有時被稱為具有解耦架構,因為雲提供商管理物理基礎設施,而不是托管在其上的應用程序或數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM