By Kashif S.
Fullstack Developer
Hey folks, I’m dealing with a strange performance issue across my Laravel infrastructure and would appreciate expert eyes on this.
I have three separate servers on DigitalOcean:
Backend Server
2 vCPU, 4GB RAM
Laravel app handling: queues, scheduled jobs, email notifications, Laravel Horizon, admin panel
Horizon processes ~17,000 jobs/hour on sometimes
Frontend Server
4 vCPU, 8GB RAM
Laravel + WordPress serving the public web/app interface
No cron jobs or queue workers here — it’s just for public traffic
Database Server
CPU usage is constantly 100% even when no jobs are actively processing
Horizon dashboard shows idle workers
top
and ps
show multiple php-fpm: pool www
processes using 5%+ CPU each
Private inbound bandwidth spikes to 100–160 Mbps
it happens in sequence, after 5-6 hours.
Experiences private outbound bandwidth spikes (same time as backend spikes)
No cron jobs, but still shows significant bandwidth usage
Private outbound traffic (to backend) also spikes up to 160+ Mbps
Coincides with backend server inbound private bandwidth spikes
Checked Nginx logs: Only minimal legitimate traffic (~5 requests in the past hour from any IP)
Detected a research scanner from Ruhr University Bochum hitting .env
paths (harmless but noted)
No cron jobs or unusual shell processes on the frontend
Enabled MySQL slow query log — will monitor if Laravel is overloading DB
Laravel log doesn’t show any failed jobs or errors
It seems like:
The frontend server may be initiating requests to the backend (APIs or queue triggering?)
Backend may be doing internal API polling or syncing causing load loops
Database is returning large responses, adding to outbound bandwidth and backend CPU load
PHP-FPM is stuck in high CPU usage loops possibly because of Laravel jobs or WordPress plugin issues
What could cause such high private traffic between servers if no visible external traffic or jobs are running?
Could there be Laravel-to-Laravel internal calls misfiring, especially between frontend and backend?
How to trace which requests (internal or external) are causing this load — ideally in real time?
Are there Laravel debugging tools (beyond Telescope) that can help me pinpoint this traffic pattern?
I’ve attached Backend Server usage graphs from DO.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Hey!
From the graphs and your notes, it really looks like there’s some kind of internal traffic loop happening between your frontend, backend, and DB, even when things look quiet from the outside.
I’d start by checking your Laravel schedulers with php artisan schedule:list
on every server, sometimes the same jobs accidentally run in multiple places. Also worth reviewing any internal API calls between frontend and backend. One small loop or sync job running too frequently can easily cause the kind of spike you’re seeing.
To trace it live, try using iftop
or tcpdump
on the backend to see exactly what’s coming in over the private network. That’ll help you pinpoint what’s triggering the CPU and bandwidth jumps.
Also, this might be a perfect use case to try out Laravel Nightwatch. It was just released a few days ago, and it can give you insights into background job performance, failed jobs, and scheduling. There’s even a free plan, so you could give it a spin without risk.
And yeah, if PHP-FPM is spiking without jobs running, something might be stuck or retrying silently in the background, Telescope helps, but tools like Blackfire or Nightwatch can show you the full picture.
Let me know what you dig up!
- Bobby
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.