簡體   English   中英

Magento 為管理員單獨設置 PHP-FPM 組

[英]Magento separate PHP-FPM group for admin

我運行一個中等流量水平的 Magento 網絡商店,在 NGINX 上運行,使用 PHP-FPM。 服務器環境非常強大,有很多開銷,所以硬件不是一個因素。

在后端運行內存密集型操作(例如導出和一些自定義索引)時,我們會遇到超時和錯誤。

忽略編寫更高效的代碼和增加整個站點的池大小,我們希望探索將更多資源分配給后端的方法,而不必減少站點中可能的並發連接大小。

有人建議我們將站點的管理員拆分為具有不同配置的單獨服務器/IP。 這將解決我們的問題,但也非常昂貴,而且似乎是解決非關鍵問題的一大飛躍。

是否可以將不同的 PHP FPM 配置與 www.example.com/admin 之類的內容相關聯,從而為來自不同 URL 的用戶提供不同的功能?

是的,這是可能的。

在這個例子中,我們指定了一個默認池,池 1。如果 URL 是 /admin,我們將使用池 2。

http {
    # The usual..

    # PHP FPM/FastCGI server
    upstream    php5p1 { server unix:/var/run/php5-fpm-pool-1.sock; }
    upstream    php5p2 { server unix:/var/run/php5-fpm-pool-2.sock; }
}

server {

    # Default is to use pool 1
    set $custom_php_pool    "1";

    # If is /admin, we use pool 2
    if ($uri ~* "^/admin/") {
        set $custom_php_pool        "2";
    }

    # ...


    location ~ \.php$ {

        # ...

        # Pass to PHP FPM/FastCGI server
        if ($custom_php_pool = '1') { fastcgi_pass php5p1; }
        if ($custom_php_pool = '2') { fastcgi_pass php5p2; }
    }
}

接受的答案在演示多池 PHP-FPM 設置時在概念上是正確的。 但是,提供的 Nginx 配置依賴於被認為是慢速和不安全的IF 指令。

取決於 URL 的多個 PHP-FPM 池的最佳 Nginx 配置:

http {
    upstream fastcgi_www {
        server unix:/var/run/php-fpm.sock;
    }

    upstream fastcgi_admin {
        server unix:/var/run/php-fpm-admin.sock;
    }

    map $request_uri $fastcgi_backend {
        default                 fastcgi_www;
        ~^(/index\.php)?/admin  fastcgi_admin;
    }

    server {
        # ...
        fastcgi_pass   $fastcgi_backend;
        # ...
    }
}

在替換所有出現的 FastCGI pass 指令后,可以使用 Magento 2 附帶的 Nginx 配置nginx.conf.sample

fastcgi_pass   fastcgi_backend;

變量依賴於請求 URL:

fastcgi_pass   $fastcgi_backend;

修改后的nginx.conf.sample保存為/var/www/magento2/nginx.conf即可復用:

http {
    # ...
    server {
        # ...
        include /var/www/magento2/nginx.conf;
    }
}

您確定 php 是您的限制因素嗎? 根據我的經驗,它主要是數據庫,它提出了鎖定等待超時。 在這種情況下,添加更多 php 進程對您沒有幫助。

暫無
暫無

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

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