> ## Content Index
> Fetch the complete content index at: https://www.blog.nestict.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# How to Fix 504 Gateway Time-out in WHM (Port 2087/2083) – Complete Troubleshooting Guide
- URL: https://www.blog.nestict.com/how-to-fix-504-gateway-time-out-in-whm-port-2087-2083-complete-troubleshooting-guide/
- Published: 2026-06-08T06:33:32.000Z
- Updated: 2026-06-08T06:33:32.000Z
- Author: Nestict Infotech CSR
- Tags: wordpress, cpanel, Technology, TECHSPOT

## Introduction

A **504 Gateway Time-out error in WHM (WebHost Manager)** is a critical issue that prevents administrators from accessing server management functions. This problem typically occurs when WHM (running on ports 2087/2083) fails to receive a timely response from backend services such as Apache, PHP-FPM, or internal cPanel daemons.

In high-traffic environments—especially those hosting multiple WordPress sites—this error is often linked to **resource exhaustion, brute-force traffic, or misconfigured services**.

This guide provides a **step-by-step, system-level troubleshooting approach** to diagnose and permanently resolve the issue.

---

## What Causes 504 Gateway Timeout in WHM?

A 504 error indicates:

> The WHM frontend (cpsrvd) could not get a response from backend services within the allowed time.

### Common causes include:

- High CPU or memory usage
- Disk I/O bottlenecks
- Apache or PHP-FPM overload
- ModSecurity processing delays
- WordPress brute-force attacks (wp-login.php floods)
- Stuck or crashed cPanel services

---

## Step 1: Check Server Load

High system load is the most common cause.

Run:

```bash
uptime
top

```

### What to look for:

- Load average significantly higher than CPU cores
- High `%CPU` or `%MEM` usage
- Many Apache (`httpd`) or PHP processes

👉 If load is high, WHM will time out.

---

## Step 2: Check Disk I/O Performance

Disk bottlenecks can freeze backend services.

```bash
iostat -x 1 5

```

### Warning signs:

- `%util` close to 100%
- High `await` times

👉 This indicates storage is overloaded.

---

## Step 3: Verify WHM Service (cpsrvd)

Check status:

```bash
systemctl status cpsrvd

```

Restart if needed:

```bash
systemctl restart cpsrvd

```

---

## Step 4: Restart Core Services (Quick Recovery)

Run this sequence:

```bash
systemctl restart cpsrvd
systemctl restart tailwatchd
systemctl restart httpd
systemctl restart mariadb

```

This clears most temporary bottlenecks.

---

## Step 5: Check Apache and PHP-FPM

Verify status:

```bash
systemctl status httpd
systemctl status php-fpm

```

If overloaded, restart:

```bash
systemctl restart httpd
systemctl restart php-fpm

```

---

## Step 6: Analyze cPanel Logs

Check WHM error logs:

```bash
tail -n 100 /usr/local/cpanel/logs/error_log

```

Check Apache errors:

```bash
tail -n 100 /usr/local/apache/logs/error_log

```

Look for:

- Timeout errors
- Resource exhaustion warnings
- Module failures

---

## Step 7: Identify WordPress Brute Force Attacks

If your server hosts multiple WordPress sites, attackers often target:

- `/wp-login.php`
- `/xmlrpc.php`

Check activity:

```bash
grep "wp-login.php" /usr/local/apache/domlogs/* | awk '{print $1}' | sort | uniq -c | sort -nr | head

```

### Indicators of attack:

- Many IPs making few requests each
- Repeated GET + POST patterns
- High frequency across domains

---

## Step 8: Optimize ModSecurity (Critical)

Heavy ModSecurity processing can cause delays.

### Recommended settings:

- Audit Log: `RelevantOnly`
- Format: `Serial`

Avoid excessive logging.

---

## Step 9: Implement WordPress Rate Limiting

Add this ModSecurity rule:

```apache
SecRule REQUEST_URI "@contains wp-login.php" \
"id:400020,phase:1,pass,nolog,setvar:ip.wp_login_hits=+1,expirevar:ip.wp_login_hits=60"

SecRule REQUEST_URI "@contains wp-login.php" \
"id:400021,phase:1,chain,deny,status:403,msg:'WP login burst blocked'"
SecRule IP:wp_login_hits "@gt 5"

```

### Also block XML-RPC:

```apache
SecRule REQUEST_URI "@streq /xmlrpc.php" \
"id:400022,phase:1,deny,status:403,msg:'XML-RPC blocked'"

```

---

## Step 10: Verify WHM Port Availability

Check if WHM is listening:

```bash
netstat -plnt | grep 2087

```

Expected output:

- cpsrvd process listening

---

## Step 11: Apache Optimization (Recommended)

In WHM → Apache Configuration:

- KeepAlive: ON
- KeepAliveTimeout: 5
- MaxRequestWorkers: tuned to server RAM
- Timeout: reduce from 300 → 60–120

---

## Step 12: Long-Term Fixes

To prevent future 504 errors:

### ✔ Optimize WordPress

- Disable XML-RPC
- Limit login attempts
- Use caching (Redis / OPcache)

### ✔ Reduce Bot Traffic

- Block abusive IP ranges
- Use ModSecurity rules (burst-based, not counters)

### ✔ Improve Server Capacity

- Upgrade disk to SSD/NVMe
- Increase RAM if under 4GB
- Use LiteSpeed or Nginx (optional)

---

## Conclusion

A 504 Gateway Timeout in WHM is not a standalone issue—it is a symptom of deeper system strain. In most cases, the root cause is a combination of:

- High traffic (often malicious)
- Backend service delays
- Resource exhaustion

By applying:

- Proper service restarts
- WordPress attack mitigation
- ModSecurity optimization
- Apache tuning

You can restore WHM stability and prevent future downtime.

---

## Quick Recovery Checklist

- Restart cpsrvd, Apache, MySQL
- Check server load and I/O
- Reduce ModSecurity logging
- Block wp-login and xmlrpc abuse
- Monitor logs continuously

---