Matt N
New Pleskian
Hi All,
looking for a bit of a feedback here on what else to be looking at to resolve my issue. Apologies for the length of the post, but want to be sure that I've included all the pertinent details
first - a bit of server detail:
We don't oversell our servers at all. On this particular server, we have a number of WordPress sites (running a mix of versions of WordPress - Mostly 4.7+, upto 5.0.2).
Single WordPress installs are exceptionally responsive, returning sites within 1 second (in their entirety). However, we have a few WordPress Mult-site installs (details below) which seem to suffer extreme performance issues.
WordPress Multi-site installs are all configured as "sub-domain" installs, in the root of the main site. One of the WordPress Multi-site installs is using different FQDN's for each site, and while the sites load, they are incredibly slow to "process" the initial work.
Note that the TTFB for the site is usually around the 30-40ms mark, but then WordPress takes (in some cases upto 15 seconds!) to deliver the site.
Examples of multi-site configs....
WordPress Multi-site 1 setup:
inside Plesk for this site, we have the following set up :
Here is a portion of my WP config related to Multi-site
The second WordPress Multi-site we have installed pretty much follows the exact same configuration, except :
I can provide details of these, if need be.
As mentioned above, other Wordpress sites on the exact same server are able to return a fully processed site in less than a second.
We have another wordpress site, using the The7 theme - with is a standalone WordPress install, that returns a site (of over 4Mb for the home page, because the customer wanted a stack of images), and it loads in about 1.2 seconds.
We have confirmed the load times and performance, from multiple networks (to rule out and DNS/networking issues on our network at home-office) as well as from mobile phone services.
Again, TTFB is usually fairly fast (although running the tests in the Plesk KB Troubleshooting slow websites
Gzip is enabled globally - as per Plesk KB 213380049 How to enable gzip compression for nginx on Plesk server
I am open to any suggestions anyone has to improving performance ...
As mentioned, this is ONLY an issue for the MultiSite installs.
looking for a bit of a feedback here on what else to be looking at to resolve my issue. Apologies for the length of the post, but want to be sure that I've included all the pertinent details
first - a bit of server detail:
Code:
OS : CentOS Linux release 7.6.1810 (Core)
Plesk Version : Plesk Onyx Version 17.8.11 Update #34
RAM : 8gb
CPU : Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz (8 core(s))
CPU Usage : load average: 0.54, 0.90, 0.94 ** This is a "normal" day
We don't oversell our servers at all. On this particular server, we have a number of WordPress sites (running a mix of versions of WordPress - Mostly 4.7+, upto 5.0.2).
Single WordPress installs are exceptionally responsive, returning sites within 1 second (in their entirety). However, we have a few WordPress Mult-site installs (details below) which seem to suffer extreme performance issues.
WordPress Multi-site installs are all configured as "sub-domain" installs, in the root of the main site. One of the WordPress Multi-site installs is using different FQDN's for each site, and while the sites load, they are incredibly slow to "process" the initial work.
Note that the TTFB for the site is usually around the 30-40ms mark, but then WordPress takes (in some cases upto 15 seconds!) to deliver the site.
Examples of multi-site configs....
WordPress Multi-site 1 setup:
Code:
WordPress Version : 5.0.2
Multi-site setup : sub-domain
Main site : www.example.com
sub-sites : blog.example.com, support.example.com
Default Theme : The7 by Dream-Theme (https://the7.io/)
Cache Plug-in : W3 Total Cache 0.9.7 (same performance with plugin-removed)
inside Plesk for this site, we have the following set up :
Code:
Main site - www.example.com - Plesk hosting settings
Domain Name : www.example.com
Document Root : /httpdocs
Hosting Type : Website
Preferred Domain : none (ie: no www.example.com, nor example.com)
SSL/TLS support : yes
Perm. 301 HTTP>S : yes
Certificate : Let's Encrypt Wildcard for example.com (generated by Plesk plugin)
PHP Version : 7.2.13 running PHP as FPM application served by nginx
CGI support : no
Perl support : no
FastCGI support : no
Code:
Main site - www.example.com - Plesk Apache & nginx settings
MIME types : default
Handler : default
Deny Access... : default
Index files : default
Expires : Custom value - 7 days
: Response with Expires headers for static files only = yes
Additional Headers: default
nginx settings
proxy mode : yes
smart static files: yes
Serve Status files: ac3 avi bmp bz2 css cue dat doc docx dts eot exe
: flv gif gz htm html ico img iso jpeg jpg js mkv
: mp3 mp4 mpeg mpg ogg pdf png ppt pptx qt rar rm svg
: swf tar tgz ttf txt wav woff woff2 xls xlsx zip webp
nginx caching : Enabled
Cache size : 128 MB
Cache Timeout : 30 minutes
Cache key : $scheme$request_method$host$request_uri
Bypass cache when : HTTP no-cache headers are received in request
: HTTP authorization headers are received in request
: GET nocache parameter in received in request
Return Stale : Upstream returns 5xx server error
: Cache is being updated
Additional nginx directives:
if (!-e $request_filename) {
set $test P;
}
if ($uri !~ ^/(plesk-stat|webstat|webstat-ssl|ftpstat|anon_ftpstat|awstats-icon|internal-nginx-static-location)) {
set $test "${test}C";
}
if ($test = PC) {
rewrite ^/(.*)$ /index.php?$1;
}
############
# W3 Total Cache nginx Config
############
include /var/www/vhosts/example.com/httpdocs/nginx.conf;
Code:
sub-sites - *.example.com - Plesk hosting settings
Domain Name : *.example.com
Document Root : /httpdocs
Hosting Type : Website
SSL/TLS support : yes
Perm. 301 HTTP>S : yes
Certificate : Let's Encrypt Wildcard for example.com (generated by Plesk plugin)
PHP Version : 7.2.13 running PHP as FPM application served by nginx
CGI support : no
Perl support : no
FastCGI support : no
Code:
sub sites - *.example.com - Plesk Apache & nginx settings
MIME types : default
Handler : default
Deny Access... : default
Index files : default
Expires : Custom value - 7 days
: Response with Expires headers for static files only = yes
Additional Headers: Custom
: Strict-Transport-Security: max-age=31536000; preload
nginx settings
proxy mode : yes
smart static files: yes
Serve Status files: ac3 avi bmp bz2 css cue dat doc docx dts eot exe
: flv gif gz htm html ico img iso jpeg jpg js mkv
: mp3 mp4 mpeg mpg ogg pdf png ppt pptx qt rar rm svg
: swf tar tgz ttf txt wav woff woff2 xls xlsx zip webp
nginx caching : Enabled
Cache size : 128 MB
Cache Timeout : 30 minutes
Cache key : $scheme$request_method$host$request_uri
Bypass cache when : HTTP no-cache headers are received in request
: HTTP authorization headers are received in request
: GET nocache parameter in received in request
Return Stale : Upstream returns 5xx server error
: Cache is being updated
Additional nginx directives:
if (!-e $request_filename) {
set $test P;
}
if ($uri !~ ^/(plesk-stat|webstat|webstat-ssl|ftpstat|anon_ftpstat|awstats-icon|internal-nginx-static-location)) {
set $test "${test}C";
}
if ($test = PC) {
rewrite ^/(.*)$ /index.php?$1;
}
############
# W3 Total Cache nginx Config
############
include /var/www/vhosts/example.com/httpdocs/nginx.conf;
Here is a portion of my WP config related to Multi-site
Code:
define('WP_DEBUG', false);
/**
* For Multi-Site network configuration
*
* Below configuration is designed for "Sub-domain" type network
*
*/
define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'www.example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
define('NOBLOGREDIRECT', 'https://www.example.com');
define('WP_DEFAULT_THEME', 'dt-the7');
/**
* Cookie Mangement
*
* set's cookie domain to null, so that coookies can traverse
* multiple sites in the network.
*
*/
#define('ADMIN_COOKIE_PATH', '');
#define('COOKIE_DOMAIN', '');
#define('COOKIEPATH', '');
#define('SITECOOKIEPATH', '');
define('FORCE_SSL_ADMIN', true);
/* That's all, stop editing! Happy blogging. */
The second WordPress Multi-site we have installed pretty much follows the exact same configuration, except :
- sites are individual sites, with different URL's
- each site uses different themes
I can provide details of these, if need be.
As mentioned above, other Wordpress sites on the exact same server are able to return a fully processed site in less than a second.
We have another wordpress site, using the The7 theme - with is a standalone WordPress install, that returns a site (of over 4Mb for the home page, because the customer wanted a stack of images), and it loads in about 1.2 seconds.
We have confirmed the load times and performance, from multiple networks (to rule out and DNS/networking issues on our network at home-office) as well as from mobile phone services.
Again, TTFB is usually fairly fast (although running the tests in the Plesk KB Troubleshooting slow websites
Gzip is enabled globally - as per Plesk KB 213380049 How to enable gzip compression for nginx on Plesk server
I am open to any suggestions anyone has to improving performance ...
As mentioned, this is ONLY an issue for the MultiSite installs.