2014-10-28 53 views
0

我使用PHP-FPM在NGINX上運行一箇中等流量級別的Magento網店。服務器環境非常強大,而且開銷很大,所以硬件不是一個因素。Magento單獨管理PHP-FPM組

在後端運行內存密集型操作(如導出和一些自定義索引)時,我們正在獲取超時和錯誤。

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

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

是否可以將不同的PHP FPM配置關聯到www.example.com/admin之類的東西,從而爲來自不同URL的用戶提供不同的功能?

回答

4

是的,這是可能的。

在這個例子中,我們指定一個默認池,池1.如果URL /聯繫,我們將使用池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; } 
    } 
} 
+0

謝謝。此功能的文檔很少,因爲沒有明確說明是否可以通過url而不是IP拆分池。 – Ucinorn 2014-10-28 22:12:23

+0

我還應該提到在Magento社區中這個文章很受歡迎。我已經閱讀了很多文章,建議爲大型Magento商店Magento增加內存限制,但是沒有人認爲這樣做只是爲了後端。上面的解決方案似乎應該是所有NGINX PHPFPM Magento體面大小安裝的標準。 – Ucinorn 2014-10-28 22:37:46