[Troubleshooting & Technical Issues] Performance and Optimisation
[Troubleshooting & Technical Issues] Performance Issues & Optimization
Performance Issues & Optimization
Link Whisper is designed to be lightweight and efficient, but certain operations—especially on large sites—can temporarily affect server performance. This comprehensive guide covers common performance issues, optimization strategies, and best practices for maintaining optimal speed.
Understanding Link Whisper's Performance Impact
Link Whisper's performance characteristics vary based on operation type and site size.
Normal Operations (Low Impact):
Viewing Link Suggestions:
When you open a post and view link suggestions:
Impact: Minimal - typically < 0.5 seconds additional load time
Why Low Impact: Suggestions are pre-generated and cached in the database
Adding Links (One-Click Insertion):
Impact: Negligible - instant insertion
Why: Simple database operation
Viewing Reports:
Impact: Low to Moderate
Small sites (< 500 posts): 1-3 seconds load time
Large sites (1,000-5,000 posts): 3-10 seconds load time
Very large sites (5,000+ posts): 10-30 seconds load time
Why: Queries database for link statistics
Resource-Intensive Operations (High Impact):
Manual Scans (Links, Broken Links):
Impact: Very High - can spike CPU and memory usage
Why: Crawls hundreds/thousands of URLs in real-time
Server Load: Can cause 503 errors on shared hosting
AI Processing (Initial Scan):
Impact: High - sustained resource usage over hours/days
Why: Analyzes all content, sends to AI, stores results
Server Load: Moderate to high, but background processing spreads load
Database Migrations (After Updates):
Impact: Moderate to High - temporary spike
Why: Updating database schema, migrating data
Duration: Usually < 5 minutes, but can be longer on massive sites
Visitor Impact:
Important distinction:
✅ Link Whisper DOES NOT load on public-facing pages
✅ Zero scripts added to visitor-facing content
✅ No performance impact on page load speed for visitors
❌ Only affects WordPress admin area and background processes
Visitors browsing your site experience no slowdown from Link Whisper.
Is Link Whisper Slowing Down Your Site?
If experiencing slowdowns, identifying the specific cause is essential.
Diagnostic Questions:
Q1: Is the slowdown in WordPress admin or public site?
Admin slowdown: Likely Link Whisper or another admin-side plugin
Public site slowdown: NOT Link Whisper (it doesn't load on frontend)
Q2: When does the slowdown occur?
When opening posts in editor: Possible (suggestions loading)
When viewing reports: Expected (database queries)
During AI processing: Expected (background processing)
All the time: Likely NOT Link Whisper (server/hosting issue)
Q3: Did slowdown start after specific action?
After activating Link Whisper: Possible correlation
After running manual scan: Likely cause
After enabling AI: Possible if still processing
Unrelated to Link Whisper actions: Probably different cause
Quick Test: Disable Link Whisper Temporarily
To confirm if Link Whisper is the cause:
Step 1: Disable Plugin
- Go to Plugins → Installed Plugins
- Deactivate Link Whisper
- Test site speed
Step 2: Evaluate
If speed improves dramatically:
Link Whisper (or something it's doing) is contributing.
Proceed to optimization steps below.
If speed remains slow:
Link Whisper is NOT the cause.
Look at:
- Other plugins
- Theme
- Hosting resources
- Database optimization needs
Common Causes of Performance Issues
Cause 1: Manual Scans During Peak Traffic
The Problem:
Running Manual Scans (Links, Broken Links) forces the server to:
- Crawl thousands of URLs in real-time
- Check each link for validity
- Update database with results
- Send hundreds of HTTP requests per minute
On shared hosting or during peak traffic, this can:
❌ Spike CPU usage to 80-100%
❌ Exhaust memory
❌ Trigger rate limiting or security blocks
❌ Cause "503 Service Unavailable" errors
❌ Slow down or crash the site temporarily
The Solution:
Solution A: Use Automatic Background Scan Instead
Enable Background Scanning:
- Go to Link Whisper → Settings → General
- Find "Automatic Background Scan" option
- Enable it
- Set frequency to every 5 minutes (default)
How It Works:
Scans 10-20 links every 5 minutes using WordPress cron.
Benefits:
✅ No performance spikes - gradual, low-resource scanning
✅ Server-friendly - stays within resource limits
✅ No 503 errors - doesn't trigger security/rate limiting
✅ Automatic - runs in background without manual intervention
Trade-off:
⚠️ Slower - full site scan takes hours or days for large sites
But this is acceptable for ongoing monitoring (not emergency checks).
Solution B: Schedule Manual Scans During Off-Hours
If you must run manual scans:
Best Times:
🌙 Late night (2 AM - 6 AM in your timezone)
🌙 Low-traffic periods (check Google Analytics for slowest times)
🌙 Weekends (if B2B site)
Avoid:
❌ Peak hours (typically 9 AM - 5 PM on weekdays)
❌ During sales/promotions
❌ Right before important deadlines
Cause 2: AI Processing on Large Sites
The Problem:
AI processing for large sites can:
✗ Run for hours or days (e.g., 10,000 posts = 12-48 hours)
✗ Consume sustained server resources
✗ Slow down admin area during processing
✗ Cause timeouts if server limits too low
The Solution:
Solution A: Use GPT-4o Mini Model
Switch from GPT-4o to GPT-4o Mini:
- Go to Link Whisper → Settings → AI Settings
- Find "Model" or "AI Model" dropdown
- Select "GPT-4o Mini"
- Save Changes
Performance Impact:
GPT-4o Mini is 10-12x faster than full GPT-4o
Example:
1,000 posts with GPT-4o: 6-12 hours processing
1,000 posts with GPT-4o Mini: 30-60 minutes processing
Quality Trade-off: Minimal (90-95% as accurate)
Credit Savings: 10-12x longer credit lifespan
Solution B: Process During Off-Hours
Schedule AI processing when traffic is lowest:
How:
- Start AI processing at 2 AM (or whenever traffic is lowest)
- Let it run overnight
- Check progress in morning
Why:
Reduces impact on visitors and other admin users.
Solution C: Increase Server Limits
Ensure adequate resources:
Contact hosting provider and request:
PHP Memory Limit: 512MB minimum (1GB for large sites)
Max Execution Time: 600 seconds minimum
See "Common PHP Errors & Solutions" article for full instructions.
Cause 3: Database Bloat from AI Data
The Problem:
Link Whisper stores AI-related data in your WordPress database:
Standard AI Data (Moderate Size):
For most sites: ~40-100MB additional database size
With "AI Powered Suggestions" Enabled (Large Size):
Stores sentence-level relevance scores.
For large sites: +200MB to +1GB additional database size
Impact:
✗ Larger database backups (slower backup/restore)
✗ Slightly slower queries (if database not optimized)
✗ Storage limits exceeded (on budget hosting)
The Solution:
Solution A: Disable "AI Powered Suggestions" Feature
If you don't need sentence-level AI analysis:
- Go to Link Whisper → Settings → AI Settings
- Find "AI Powered Suggestions" toggle
- Disable it
- Save Changes
Result:
✔️ Deletes sentence-level data
✔️ Reduces database size by 50-80% (AI data)
✔️ Still keeps post-level AI relation data (main feature)
What You Lose:
⚠️ Slightly less precise suggestions (post-level vs. sentence-level)
Most users won't notice a difference.
Solution B: Optimize Database Regularly
Using WP-Optimize Plugin (Free):
- Install WP-Optimize plugin
- Go to WP-Optimize → Database
- Select:
- Post revisions
- Auto-drafts
- Spam/Trash comments
- Transient options
- Click "Run optimization"
- Schedule weekly auto-optimization
Result: Removes bloat, improves query speed.
Solution C: Use Domains Report to Bulk Delete Old Links
If you have thousands of old external links you no longer need:
- Go to Link Whisper → Reports → Domains
- Filter or search for domains to remove
- Select all (checkbox)
- Click "Delete Selected"
- Confirm deletion
Use Cases:
✗ Old affiliate programs shut down
✗ Competitor links you want to remove
✗ Defunct sites (404s)
✗ Site migrations (old domain to new)
Time Saved: Bulk delete hundreds of links in 30 seconds vs. hours manually.
Cause 4: Caching & Plugin Conflicts
The Problem:
Aggressive caching or security plugins can:
✗ Block API calls needed for suggestions
✗ Cache stale data (old reports, outdated suggestions)
✗ Interfere with background processes
✗ Trigger false alarms ("bot attack" detection)
Common Culprits:
⚠️ Cloudflare: Blocks rapid API requests as "bot"
⚠️ Wordfence: Rate limiting blocks scans
⚠️ iThemes Security: Restricts REST API access
⚠️ WP Rocket / W3 Total Cache: Caches admin pages (shouldn't, but sometimes does)
The Solution:
Solution A: Whitelist Link Whisper in Security Plugins
For Wordfence:
See full instructions in "Plugin Causing Site Errors? Emergency Fix Guide"
Quick Fix:
- Wordfence → Firewall → All Firewall Options
- Scroll to "Whitelisted URLs"
- Add:
/wp-json/link-whisper/*
- Save
For Cloudflare:
- Cloudflare Dashboard → Security → WAF
- Create Firewall Rule:
- When incoming requests match: URI Path contains
wp-json/link-whisper
- Then: Allow
- When incoming requests match: URI Path contains
- Deploy
For iThemes Security:
- Security → Settings → Configure Settings
- Navigate to "Ban Users"
- Whitelist your server IP
Solution B: Clear Object Cache
If changes don't appear in reports immediately:
For Redis/Memcached:
If using object caching:
- Install Redis Object Cache or Memcached Object Cache plugin (if not already)
- Go to plugin settings
- Click "Flush Object Cache" or "Clear Cache"
Alternative - Flush All Caches:
- WP Rocket → Clear Cache
- W3 Total Cache → Performance → Purge All Caches
- Cloudflare → Caching → Purge Everything
Result: Forces fresh data retrieval.
Solution C: Exclude Link Whisper from Caching
In WP Rocket:
- WP Rocket → Settings → Advanced Rules
- Find "Never Cache URL(s)"
- Add:
/wp-admin/admin.php?page=link-whisper*
- Save
In W3 Total Cache:
- Performance → Page Cache
- Scroll to "Never cache the following pages"
- Add:
wp-admin/admin.php?page=link-whisper*
- Save
Cause 5: WordPress Cron Not Running Properly
The Problem:
Link Whisper relies on WordPress Cron for:
✓ Background scans (broken links, orphan posts)
✓ AI processing (batch processing posts)
✓ Auto-linking (applying rules automatically)
If cron isn't running, these processes stall or don't complete.
Why Cron Fails:
✗ Low traffic site: WP-Cron requires visitor to trigger (if no visitors, no cron)
✗ Cron disabled: Some hosts disable default WP-Cron
✗ Server misconfiguration
The Solution:
Step 1: Check If Cron Is Running
Install WP Crontrol Plugin:
- Plugins → Add New
- Search "WP Crontrol"
- Install and activate
Check Scheduled Events:
- Tools → Cron Events
- Look for Link Whisper events (search for "link" or "whisper")
- Check "Next Run" times
If No Link Whisper Events:
Cron may be disabled or not triggering properly.
Step 2: Enable Real System Cron (Recommended for Large Sites)
Why Real Cron Is Better:
✅ Runs reliably every minute (independent of traffic)
✅ Doesn't slow page loads (WP-Cron runs on page load)
✅ More accurate timing
✅ Better for background processing
How to Set Up (cPanel):
Step 1: Disable Default WP-Cron
- Access site via FTP or File Manager
- Open wp-config.php
- Find:
/* That's all, stop editing! Happy publishing. */
- Above that line, add:
define('DISABLE_WP_CRON', true);
- Save
Step 2: Create System Cron Job
- Log into cPanel
- Find "Cron Jobs" icon
- Click to open
- Under "Add New Cron Job":
- Common Settings: Every minute ( *)
- Command:
wget -q -O - https://yourdomain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
(Replace yourdomain.com with your actual domain)
- Add Cron Job
Result: Cron runs every minute, ensuring Link Whisper background tasks execute reliably.
For Other Hosts:
Contact hosting support: "Please help me set up a system cron job to run wp-cron.php every minute."
Optimizing for Large Sites (1,000+ Posts)
Sites with massive content archives require specific optimization.
Expected Processing Times:
Initial Link Scan:
~1,000 posts: 10-15 minutes
~5,000 posts: 30-60 minutes
~10,000 posts: 60-120 minutes (1-2 hours)
~50,000 posts: 6-12 hours
AI Processing (GPT-4o Mini):
~1,000 posts: 30-60 minutes
~5,000 posts: 2-4 hours
~10,000 posts: 6-12 hours
~50,000 posts: 24-48 hours
Manual Broken Link Scan:
~1,000 posts (avg 10 links each = 10,000 links): 15-30 minutes
~10,000 posts (100,000 links): 2-4 hours
Optimization Strategies:
1. Increase Server Resources
Recommended for Large Sites:
PHP Memory Limit: 1GB (1024MB) minimum
Max Execution Time: 600 seconds minimum
MySQL Max Connections: 100+
Consider Upgrading Hosting:
If on shared hosting with 10,000+ posts, consider:
VPS (Virtual Private Server):
- DigitalOcean
- Linode
- Vultr
Managed WordPress Hosting:
- WP Engine
- Kinsta
- Flywheel
Benefits:
- Dedicated resources
- Higher limits
- Better performance
- Fewer timeouts/errors
2. Use GPT-4o Mini for AI
Always use GPT-4o Mini for large sites:
10-12x faster processing
10-12x cheaper credit usage
Minimal quality difference
3. Process AI in Batches
For very large sites (10,000+ posts), consider processing in batches:
Example Strategy:
Week 1: Process top 1,000 posts by traffic
Week 2: Process next 1,000 posts
Week 3: Continue until complete
How:
Contact support for guidance on batch processing or selective AI analysis.
4. Schedule Heavy Operations Off-Peak
Run during:
🌙 Overnight (2 AM - 6 AM)
🌙 Weekends (if B2B)
🌙 Low-traffic periods
5. Use Background Scan (Not Manual)
For ongoing monitoring on large sites:
Enable Automatic Background Scan
Disable or rarely use Manual Scan
Why:
Background scan won't overload server, even on 50,000+ post sites.
Database Optimization Best Practices
Regular Maintenance:
Weekly Tasks:
🛠️ Optimize database tables (using WP-Optimize or similar)
🛠️ Delete post revisions older than 30 days
🛠️ Clear spam/trash comments
🛠️ Remove transient options
Monthly Tasks:
🛠️ Review Domains Report - delete defunct external domains
🛠️ Check database size - ensure within hosting limits
🛠️ Backup database - before major changes
Recommended Plugins:
🔧 WP-Optimize (free) - Database cleanup and optimization
🔧 Advanced Database Cleaner (free/premium) - Deep cleaning
🔧 WP-Sweep (free) - Database sweeping tool
Link Whisper-Specific Optimization:
If Link Whisper data is taking up significant space:
Option 1: Disable "AI Powered Suggestions" (as described above)
Option 2: Clear old link data:
- Domains Report → Bulk Delete old domains
- Removes associated link records from database
Option 3: Fresh start (nuclear option):
- Deactivate Link Whisper
- Delete Link Whisper (removes database tables)
- Reinstall and reactivate
- Re-run initial scans
Note: This deletes ALL Link Whisper data (settings, suggestions, reports). Only use if absolutely necessary.
Monitoring Performance
Track performance over time to catch issues early.
Tools to Use:
Query Monitor Plugin (Free):
Shows:
- Database queries (count, time)
- PHP errors
- HTTP requests
- Plugin/theme breakdown
How to Use:
- Install Query Monitor
- Open WordPress admin
- Check Query Monitor toolbar
- Look for:
- Slow queries (> 0.5 seconds)
- High query count (> 100 per page)
- Errors
New Relic / Application Performance Monitoring:
For large/enterprise sites, use APM tools:
- New Relic
- Datadog
- Scout APM
Benefits:
- Real-time monitoring
- Performance alerts
- Detailed breakdowns
Key Metrics to Monitor:
📊 Database query time (should be < 1 second per admin page)
📊 PHP memory usage (should stay < 80% of limit)
📊 Server CPU usage (should average < 50%)
📊 Page load time (admin pages should be < 3 seconds)
If Metrics Exceed Thresholds:
Investigate:
- Which plugins/themes are slow
- Are there runaway cron jobs
- Is database optimization needed
- Are server resources adequate
Frequently Asked Questions
Q: Does Link Whisper slow down my site for visitors?
A: No! Link Whisper loads only in WordPress admin, not on public-facing pages. Visitors experience zero performance impact.
Q: How often should I run manual scans?
A: For large sites, avoid manual scans. Use Automatic Background Scan instead. For small sites (< 500 posts), manual scans are fine monthly or as needed.
Q: Will AI processing slow down my site?
A: During processing, WordPress admin may feel slightly slower. After processing completes, there's no ongoing impact. Visitors are never affected.
Q: Should I disable Link Whisper during high-traffic events?
A: Not necessary. Link Whisper doesn't affect frontend performance. However, avoid running manual scans during high-traffic events.
Q: Can I move Link Whisper data to a separate database?
A: No, Link Whisper stores data in the main WordPress database. However, data size is typically small (40-100MB) and shouldn't require separate database.
Q: My database is huge. Is it Link Whisper?
A: Probably not. Check using WP-Optimize or similar to see table sizes. Link Whisper tables (prefixed with wp_linkwhisper_) are usually < 100MB total, even on large sites.
Q: Can I schedule AI processing to run at specific times?
A: AI processing uses WordPress cron, which runs based on site traffic and cron schedule. For precise scheduling, set up real system cron (see above) and trigger processing at desired time.
Need Help?
For performance optimization assistance:
Email: support@linkwhisper.com
Subject: "Performance Optimization Help"
Include:
- Site size (number of posts)
- Hosting provider and plan
- Specific performance issue (slow admin, timeouts, etc.)
- What you've tried
- Screenshots of slow pages or error messages
Response Time: Usually within 24 hours
Optimize Link Whisper for maximum efficiency!