• Please be aware: Kaspersky Anti-Virus has been deprecated
    With the upgrade to Plesk Obsidian 18.0.64, "Kaspersky Anti-Virus for Servers" will be automatically removed from the servers it is installed on. We recommend that you migrate to Sophos Anti-Virus for Servers.
  • The Horde webmail has been deprecated. Its complete removal is scheduled for April 2025. For details and recommended actions, see the Feature and Deprecation Plan.
  • We’re working on enhancing the Monitoring feature in Plesk, and we could really use your expertise! If you’re open to sharing your experiences with server and website monitoring or providing feedback, we’d love to have a one-hour online meeting with you.

Question Hosting 2000 small WordPress sites with Plesk

olegburca

New Pleskian
Hello,

I'm working as system administrator, helping small development and hosting companies with hosting services administration.

Recently I got a really challenging request.

One company currently have around 1200 small WordPress sites (mostly landings) hosted on cPanel server.
They plan to increase the number to 2000.

I'm going to propose them migration to Plesk, but I'm not sure about how much resources to plan and what configuration to implement.

Does anybody have a similar experience? Can you suggest the amount of resources to allocate (CPU cores, RAM) and what Plesk/services/settings to tune?

Any recommendations for WordPres sites configuration would also be helpful.

Thank you very much!
 
How many daily visitors are those sites getting?

What are the specifications and the loads of the current server? How much bandwidth is their current server consuming?

Are they using one mysql database per site? With PHP 7+ using php-fpm or..?

Apache or Nginx or both?
 
Hi Ales,

Not so much visitors for now, but they plan to invest in sites promoting, so traffic is expected to grow considerable.
Sites generate around 250GB traffic monthly currently.
Currently they use a virtual server (4 CPU cores, 16GB RAM, slow network attached disk).
One database per site.
PHP 7.3 running as PHP-FPM with Apache.

Thank you.
 
The above is certainly sound advice.

There is information that is missing here and the information that nobody can possibly know, the current load averages and the visitors/traffic increase that might happen. Right now, we can only speculate...

@olegburca, in any case, it seems that you are getting an interesting server to administer, this will be fun!
 
The problem (and the question) is not about system requirements, we got a dedicated server with RAID10 and 128GB of RAM (yes, 128GB of RAM).
I installed Proxmox (based on Debian 10) and run Plesk in a KVM virtual server (CloudLinux 7, ext4) running a qcow disk in LVM.
The sites are quite small (most of them are 5 pages sites, with 100MB disk usage and under 30MB database).

I migrated the domains from a cPanel server. There are almost 1200 sites managed in 155 hosting subscriptions.
But the server is not yet in prod (sites are not changed often, so I have some time to test and optimize the server before putting it live).

My question is more about server optimization and, most important, Plesk optimization.
Some of the problems I already seen are:
Plesk takes very long time to delete domains (cPanel created by default subdomains for add-on domains, Plesk imported them as standalone domains, by the way - where to report this annoying issue?), Apache configuration went broken during this operation. I had to execute plesk repair web, and it also took very long time.
Plesk takes very long time to change hosting package for subscriptions.

But the server load is insignificant during these operations.
LoadAverage is under 4 for a 12 CPU core server, RAM usage 5GB of 64GB assigned, mysql processlist is empty almost all time, disk %await is close to zero.

I'm ready to allow Plesk more resources in order to get things done faster.
So any recommendations about tuning Plesk in order to make it faster will be highly appreciated.

Regards,
Oleg.
 
Last edited:
Hi,

I updated DNS template, then applied the changes to all domains.
It worked until 84%, but then I got an error:
Task is not responding: id=221, pid=2537197, type=dns-synchronize: 84%

In the end the task failed, there were 13 domains with bad dns zones.
Bind failed to start.
plesk repaid dns domain.name was not able to fix them.
Syncing the zones from web panel resolved the issue.


- Is there a way to see the log/status/progress for task started from web panel?
/var/log/plesk/panel.log is not so informative.

- I had the same message (Task is not responding) when performed actions for multiple domains/subscriptions at once, for example I was deleting the annoying subdomains imported from cPanel, the task died with "Task is not responding", I got around 50 broken apache/nginx/webmail config files and two domains remaining without a hosting account.
Is there a way to increase this timeout for tasks execution or allow them to work in background?

- I would highly appreciate some suggestions to my previous question about how to allow Plesk to use more resources, but do things faster.

Thank you guys.
 
Last edited:
Task is not responding: id=221, pid=2537197, type=dns-synchronize: 84%
Often it is CloudLinux related issue: /usr/sbin/kill_php_script from lve-utils package shipped by CloudLinux which is checking for PHP scripts runnig more than 10 minutes.
As a possible solution try to adjust the script to exclude 'sw-engine'. Edit file /usr/sbin/kill_php_script` to look as follow:

Code:
#!/bin/bash

KEY=grep ^disable_kill_orphaned_cron /etc/sysconfig//cloudlinux | sed 's/disable_kill_orphaned_cron[ ]*=[ ]*//'

if [ -z "$KEY" -o "$KEY" = 'n' -o "$KEY" = 'N' ]; then
# LU-539: use "command:4096" in order to get full path (without cutting). 4096 == MAX_PATH (usual maximum path length allowed by linux kernel)
/bin/ps -Ao"pid,etime,command:4096,ppid" | grep /php | grep -v mysqld_safe | grep -v lsphp | grep -v php-fpm | grep -v /home/interworx/bin/php | grep -v sw-engine | /bin/grep ' 1$' | awk '{if ($2 >= "10:00" ) print $1}' | /usr/bin/xargs --no-run-if-empty kill -9
fi

Note: lve-utils package update will remove all changes.

Or disable the cronjob: Edit /etc/sysconfig/cloudlinux and change disable_kill_orphaned_cron to Y:

Code:
disable_kill_orphaned_cron = Y
 
Back
Top