The problem that almost killed their business
You just signed your tenth WordPress-based SaaS client. Now your database connections are timing out. The admin dashboard feels sluggish during peak hours. And you’re pretty sure some noisy neighbor on your cheap shared hosting is mining crypto and wrecking your disk I/O.
This isn’t theory. This is a real story from a CRM SaaS company based in Shenzhen. They ran their entire WordPress-powered SaaS platform on budget shared hosting. Fifty-seven active business clients. Each client pulling reports, syncing contacts, and generating invoices. The server started falling apart at 2 PM every single day.
They switched to a RakSmart VPS. The exact plan is the SV Global BGP 1G SV E3-1230 with 16GB RAM, 1TB HDD, and a single IP. Everything changed.
Let me walk you through exactly what broke, how they fixed it, and why that RakSmart VPS turned their WordPress SaaS into a speed machine.
Why their old WordPress hosting kept dying at 2 PM
The Shenzhen team started lean. Three founders. Twenty trial customers on a WordPress multi-site setup running on cheap shared hosting. Six months later, they had fifty-seven active business clients. Each client with their own WordPress installation. Plugins, themes, database queries, cron jobs.
At 2 PM every weekday, I/O wait spiked to 40%. WordPress database queries that normally took 80ms suddenly took 800ms. The admin dashboard took fifteen seconds to load. Customers filed support tickets. One enterprise client threatened to leave because their sales team couldn’t load lead lists during afternoon meetings.
They tried everything. Upgraded to a “premium” shared hosting plan. Tweaked MySQL buffer pools. Installed every WordPress caching plugin known to humanity. Nothing worked permanently.
Here’s the ugly truth they discovered. Shared hosting always means shared resources. Always. You never know who’s on the same physical machine. Could be a crypto miner. Could be a video transcoding server. Could be another WordPress site with a badly coded plugin hammering the disk. Doesn’t matter. When that neighbor acts up, your WordPress sites feel the pain.
The solution came from an unexpected direction. Someone on Reddit mentioned RakSmart VPS plans. The specs looked solid. E3-1230 equivalent performance, 16GB RAM, 1TB HDD. They took a leap.
The migration happened over a weekend. Friday night they spun up the RakSmart VPS with Ubuntu 22.04. Saturday they migrated all fifty-seven WordPress databases and uploads folders. Sunday they cut DNS and watched logs like hawks.
By Monday morning, average WordPress admin dashboard load time dropped from 3.8 seconds to 0.7 seconds. Database connection pool errors vanished. The enterprise client stayed and signed a longer contract.
Old hand tip. I’ve watched WordPress agencies waste months tuning plugins and arguing with hosting support when the real problem was resource contention on shared servers. You can’t fix noisy neighbors with better caching. You need your own VPS with dedicated resources.
Setting up WordPress on the RakSmart VPS
After moving to RakSmart, the team needed to keep each client’s WordPress site isolated. Client A’s database should never touch Client B’s files. One noisy plugin shouldn’t be able to crash everyone else.
They chose Docker containers with hard resource limits. Each WordPress instance runs in its own container. Each container gets explicit CPU and memory caps. No guessing. No fighting.
First, install Docker on the fresh RakSmart VPS.
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
Then create a dedicated WordPress container for each client. A typical small business WordPress site needs about 0.8 CPU cores and 1GB of RAM. A larger WooCommerce store needs 1.5 cores and 2GB.
Here’s the exact command they used for a standard WordPress client.
docker run -d
–name wordpress_client_acme
–cpus=”0.8″
–memory=”1024m”
–memory-swap=”1280m”
–restart always
-v /srv/wordpress/acme/html:/var/www/html
-v /srv/wordpress/acme/logs:/var/log/apache2
wordpress:php8.2-apache
For a heavier WooCommerce client with lots of products and traffic.
docker run -d
–name wordpress_client_woostore
–cpus=”1.5″
–memory=”2048m”
–memory-swap=”2560m”
–restart always
-v /srv/wordpress/woostore/html:/var/www/html
-v /srv/wordpress/woostore/logs:/var/log/apache2
wordpress:php8.2-apache
Why these numbers? The RakSmart VPS offers solid CPU allocation. You can comfortably run fifteen to twenty WordPress containers with proper tuning. RAM is 16GB total. Leave two to three GB for the host and Docker. That gives you room for ten to fifteen WordPress containers easily. They pushed it to twenty-five by using aggressive caching and PHP-FPM tuning.
But containers alone aren’t enough. You need to route web traffic from the outside world to the right container. Each client has their own domain. acme.crm.example.com, woostore.example.com, and so on.
They installed Nginx directly on the host. One Nginx instance reads the domain name from each incoming request and proxies to the correct container.
Install Nginx.
sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx
Create a configuration file for each WordPress client in /etc/nginx/sites-available/.
server {
listen 80;
server_name acme.crm.example.com www.acme.crm.example.com;
location / {
proxy_pass http://172.17.0.3;
proxy_set_header Host host;proxysetheaderX−Real−IPremote_addr;
proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto scheme;
}
}
That 172.17.0.3 is the Docker container’s internal IP. Find it by running docker inspect on the container.
Then enable the site and test.
sudo ln -s /etc/nginx/sites-available/acme.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
For HTTPS, they used Certbot to get free Let’s Encrypt certificates on the host.
sudo apt install certbot python3-certbot-nginx -y
sudo certbot –nginx -d acme.crm.example.com -d www.acme.crm.example.com
The certificate lives on the host. Nginx terminates HTTPS and forwards plain HTTP to the WordPress container over the internal Docker network. That’s fine. Encryption happens at the edge.
Old hand tip. Don’t run Certbot inside every container. Run it once on the host. One place to renew fifty certificates. Much cleaner.
Making WordPress fly on a RakSmart VPS
The Shenzhen team didn’t stop at basic setup. They tuned every layer to squeeze maximum performance out of that RakSmart VPS.
First, they enabled BBR TCP congestion control. WordPress admin dashboards involve lots of small HTTP requests. BBR helps on long-distance connections.
echo “net.core.default_qdisc=fq” >> /etc/sysctl.conf
echo “net.ipv4.tcp_congestion_control=bbr” >> /etc/sysctl.conf
sysctl -p
Second, they switched Ubuntu’s package mirrors to domestic Chinese mirrors. Downloading WordPress updates from the US over a trans-Pacific link is painfully slow.
sudo sed -i ‘s/archive.ubuntu.com/mirrors.aliyun.com/g‘ /etc/apt/sources.list
sudo apt update
That cut apt update time from three minutes to eight seconds. Not directly WordPress related, but keeping the host updated is critical for security.
Third, they set up a shared Redis container for all WordPress sites. One Redis instance handles object caching for every client’s WordPress.
docker run -d –name redis-shared –memory=”1024m” –cpus=”0.8″ –restart always redis
Then in each WordPress container, they installed the Redis Object Cache plugin and configured wp-config.php to connect to the shared Redis container.
define(‘WP_REDIS_HOST’, ‘redis-shared’);
define(‘WP_REDIS_PORT’, 6379);
define(‘WP_REDIS_DATABASE’, 0);
The WordPress container can reach the Redis container by its Docker name because they’re on the same bridge network.
Fourth, they configured PHP-FPM for static pools instead of dynamic. Each WordPress container runs PHP-FPM with a fixed number of child processes.
Inside the WordPress container, edit /usr/local/etc/php-fpm.d/www.conf.
pm = static
pm.max_children = 4
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
For a small site with 500 visits per month, two PHP processes are plenty. For a WooCommerce site with 5,000 visits, four to six processes.
The result? Average Time to First Byte on WordPress admin dropped from 1.2 seconds to 0.3 seconds. Frontend page loads dropped from 2.5 seconds to 0.8 seconds. The enterprise client noticed within a week and asked what magic they performed.
SSH and firewall for WordPress on VPS
Bad WordPress tutorials tell you to turn off the firewall or leave SSH on port 22. Don’t. That’s how you get your VPS turned into a spam relay or a phishing host.
The right way. Change SSH to a nonstandard port. Allow only 80 and 443 to the world. Restrict everything else.
First, change SSH port to 22566.
sudo sed -i ‘s/#Port 22/Port 22566/’ /etc/ssh/sshd_config
sudo systemctl restart sshd
Second, install and configure UFW.
sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22566/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Third, install Fail2ban to block brute force attacks on SSH and WordPress login pages.
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Create a jail for WordPress login protection. Even though WordPress runs inside containers, the host Nginx logs all requests.
Edit /etc/fail2ban/jail.local.
[wordpress-xmlrpc]
enabled = true
port = http,https
filter = wordpress-xmlrpc
logpath = /var/log/nginx/access.log
maxretry = 3
bantime = 3600
[wordpress-login]
enabled = true
port = http,https
filter = wordpress-login
logpath = /var/log/nginx/access.log
maxretry = 5
bantime = 1800
Then create the filters.
/etc/fail2ban/filter.d/wordpress-login.conf
[Definition]
failregex = ^<HOST> .* “POST /wp-login.php.* HTTP/\d.\d” 200
ignoreregex =
Restart Fail2ban.
sudo systemctl restart fail2ban
Now anyone who fails to log into any WordPress site on your VPS five times gets banned for thirty minutes. Anyone hammering xmlrpc.php gets banned for an hour.
Old hand tip. Test that your new SSH port works before closing the current session. Open a second terminal and try to connect. If you lock yourself out, RakSmart gives you VNC console access through their portal. Every admin has done this at least once.
Real WordPress performance numbers before and after
Let me give you hard numbers from the Shenzhen team’s migration. Not marketing fluff. Real before and after.
Before RakSmart VPS on shared hosting with fifty-seven WordPress sites:
- Average WordPress admin dashboard load time: 3.8 seconds
- 95th percentile admin load time: 11 seconds
- Average frontend page load time: 2.5 seconds
- Database connection errors per day: 50 to 200
- Server load average at peak: 8 to 12
- Customer support tickets about WordPress slowness: 8 to 12 per week
After RakSmart VPS with the same fifty-seven WordPress sites:
- Average WordPress admin dashboard load time: 0.7 seconds
- 95th percentile admin load time: 1.2 seconds
- Average frontend page load time: 0.8 seconds
- Database connection errors per day: 0
- Server load average at peak: 2.5
- Customer support tickets about WordPress slowness: 1 in three weeks
The enterprise client that almost left? They upgraded to a higher plan three months later. Then they referred two other enterprise clients. The Shenzhen team now runs seventy WordPress SaaS tenants on that same RakSmart VPS.
Why a good VPS beats shared hosting every time
The Shenzhen team went from paying for multiple shared hosting accounts to a single RakSmart VPS. The performance improvement was massive, and the management overhead dropped significantly.
But the bigger win was predictability. Their WordPress SaaS went from “slow and unreliable” to “fast and boring.” Boring is good in hosting. Boring means no tickets. Boring means no emergency 11 PM debugging sessions.
If you’re running WordPress sites for clients, or running a WordPress-powered SaaS, take a hard look at VPS hosting. RakSmart offers solid hardware and network. Just don’t expect hand-holding. You bring the Linux skills. They bring the infrastructure. That’s the deal.
FAQ for WordPress pros and beginners
Q: Is a VPS really better than shared hosting for WordPress?
A. Yes. Shared hosting crams hundreds of users onto one server. A good VPS gives you dedicated resources. Your performance doesn’t depend on your neighbor’s badly coded plugin.
Q: Can I migrate an existing high-traffic WooCommerce site to this RakSmart VPS?
A. Yes, but watch your RAM. WooCommerce with many products and active sessions can eat memory. Start with one or two Woo stores per VPS. Add more as you monitor usage.
Q: Does RakSmart offer any managed WordPress support on their VPS plans?
A. The SV Global BGP plan is unmanaged. You get root access and hardware support. If the drive fails, RakSmart fixes it. If you break WordPress, that’s on you. Fair trade for the performance.
Q: How does this compare to managed WordPress hosting like Kinsta or WP Engine?
A. Those are managed services. You pay a premium for convenience. RakSmart gives you raw VPS power. You do the management yourself. If you’re comfortable with the command line, you save a fortune. If not, stick with managed.
Q: What about backups for WordPress on VPS? Does RakSmart handle that?
A. No. You must set up your own WordPress backups. Use the script above or a plugin like UpdraftPlus that can push to object storage. Never trust a single disk. Never trust RAID alone. Offsite or bust.
Q: Can I run WordPress Multisite on this VPS setup?
A. Yes. Run one WordPress Multisite container instead of fifty separate containers. But then all subsites share the same container resources. If one subsite gets a bad plugin, all subsites suffer. Tradeoffs.

