In Apache HTTP server environments, you might encounter millions of log entries like this:
::1 - - [21/Nov/2011:16:15:54 +0000] "OPTIONS * HTTP/1.0" 200 - "-" "Apache/2.2.15 (Unix) PHP/5.2.13 (internal dummy connection)"
These are internal health checks performed by Apache's worker management system. The IPv6 notation (::1) appears because modern Linux systems prioritize IPv6 loopback addresses over IPv4 (127.0.0.1).
Apache creates these dummy connections to:
- Maintain worker processes in ready state
- Test server responsiveness
- Prevent connection setup delays
The requests are completely normal and indicate proper server operation. They become problematic only when:
- Log rotation issues occur due to volume
- Monitoring systems misinterpret them as real traffic
- Storage gets filled with log files
To manage these logs without disabling essential functionality:
Option 1: Conditional logging
SetEnvIf User-Agent "internal dummy connection" dontlog
CustomLog /var/log/apache2/access.log combined env=!dontlog
Option 2: Modify LogLevel
LogLevel warn
# Instead of:
# LogLevel debug
Option 3: IPv4 fallback
# In /etc/gai.conf
precedence ::ffff:0:0/96 100
While these connections consume minimal resources, in high-traffic environments you might want to adjust:
# In httpd.conf
KeepAliveTimeout 2
MaxKeepAliveRequests 100
MinSpareServers 5
MaxSpareServers 10
The exact tuning depends on your server's workload and available memory.
For log analysis tools, create a custom log format that excludes dummy connections:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" customlog
CustomLog /var/log/apache2/access.log customlog env=!dontlog
Remember that completely blocking these connections might negatively impact server performance during traffic spikes.
If you're seeing millions of entries like this in your Apache access logs:
::1 - - [21/Nov/2011:16:15:54 +0000] "OPTIONS * HTTP/1.0" 200 - "-" "Apache/2.2.15 (Unix) PHP/5.2.13 (internal dummy connection)"
These are Apache's internal health check requests that appear even without any external traffic. The IPv6 notation (::1) represents localhost (equivalent to 127.0.0.1 in IPv4).
Apache creates these dummy connections for several internal operations:
- Server maintenance tasks
- Module initialization checks
- Keep-alive monitoring
- Prefork MPM child process management
The OPTIONS * HTTP/1.0 method is a special request type that:
1. Doesn't target any specific resource
2. Checks server capabilities
3. Maintains persistent connections
4. Helps child processes stay alive
To reduce or eliminate these logs while maintaining functionality:
# In httpd.conf or your virtual host configuration
LogLevel warn
SetEnvIf User-Agent "internal dummy connection" dontlog
CustomLog logs/access_log common env=!dontlog
# For mod_status users
<Location /server-status>
SetHandler server-status
Require local
ExtendedStatus On
</Location>
For more granular control using conditional logging:
# Filter out both IPv4 and IPv6 dummy connections
SetEnvIf Remote_Addr "127\.0\.0\.1" loopback
SetEnvIf Remote_Addr "::1" loopback
CustomLog logs/access_log combined env=!loopback
While these connections are lightweight, excessive logging can:
- Inflate log file sizes unnecessarily
- Increase disk I/O operations
- Make log analysis more difficult
- Potentially trigger log rotation prematurely
This behavior varies across Apache versions:
Version | Behavior |
---|---|
2.2.x | Frequent dummy connections |
2.4.x | Reduced frequency |
2.4.41+ | Configurable via new directives |
Instead of completely disabling these logs, consider:
# Create a separate log file just for internal requests
CustomLog logs/internal_conn.log "%h %l %u %t \"%r\" %>s %b" env=loopback