繁体   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