Skip to content
Advertisement

Magento separate PHP-FPM group for admin

I run a Magento webstore with middling traffic levels, running on NGINX with PHP-FPM. The server environment is very powerful with plenty of overhead, so hardware is not a factor.

We are getting timeouts and errors when running memory intensive operations in the backend, such as exports and some custom indexes.

Ignoring writing more efficient code and increasing pool sizes across the whole site, we want to explore ways to allocate more resources to the backend without having to reduce possible concurrent connections sizes across the site.

It has been suggested that we split the admin of the site to a separate server/IP, with different configs. This would solve our problem, but also be very expensive, and seems like a big leap to solve a non-critical problem.

Is is possible to associate a different PHP FPM config to something like www.example.com/admin, giving users from different URLS different capabilities?

Advertisement

Answer

Yes, it’s possible.

In this example, we specify a default pool, pool 1. If the URL is /admin, we will use pool 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; }
    }
}
User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement