The cause of these tends to be related to browsers that do predictive web 
requests to the server.
The 408 happens after the unused connections time-out.
The issue is also tied to RHEL 6.x and CentOS 6.x systems after a certain 
kernel version, I can’t remember which one off the top of my head.
I haven’t heard of any ability to stop this from happening, assuming you’re 
running a public web server and have no control over the browser settings.
If you really care, the only workaround I’m aware of is to configure an apache 
timeout on empty requests to make them time out quicker. This is currently what 
I’m doing.

LoadModule reqtimeout_module modules/mod_reqtimeout.so
<IfModule reqtimeout_module>
        RequestReadTimeout header=2-10,MinRate=500 body=20-120,MinRate=1000
</IfModule>

YMMV

-Tony


From: 박원석 [mailto:[email protected]]
Sent: Wednesday, January 08, 2014 1:43 AM
To: [email protected]
Subject: [users@httpd] apache 408 status code in 2.2.18 later

I sent this mail to [email protected]<mailto:[email protected]> but 
at 06 JAN, but i can't find that mail in mailing list

so i send to mail again,


< --original contents-- >

Hello, I send this mail at first time and I had some questions with this 
enviroment

========================================
- Usage : Image Server(there is no backend system)
- Old one  : RHEL5.x,  httpd-2.2.17
- New one : RHEL6.x, httpd-2.2.22
- WEB configuration : old and new one same configuration
- OS parameter : limits.conf, security.conf are same thing
========================================
httpd-default.conf
Timeout 15
KeepAlive Off
 ========================================
httpd-mpm.conf
<IfModule mpm_worker_module>
    ListenBacklog 8192
    ServerLimit  192
    StartServers         20
    MaxClients         12288
    MinSpareThreads     2048
    MaxSpareThreads     8192
    ThreadsPerChild      64
    MaxRequestsPerChild   60000
</IfModule>
==========================================

the problem is that the new one(2.2.22) have the 408 status code in accesslog
183.113.39.228 - - [01/Jan/2014:08:30:11 +0900] "-" 408 - 0
175.241.140.213 - - [01/Jan/2014:08:30:11 +0900] "-" 408 - 0
14.88.50.166 - - [01/Jan/2014:08:30:11 +0900] "-" 408 - 0
175.240.239.52 - - [01/Jan/2014:08:30:11 +0900] "-" 408 - 0
175.253.205.130 - - [01/Jan/2014:08:30:11 +0900] "-" 408 - 0
14.92.97.71 - - [01/Jan/2014:08:30:11 +0900] "-" 408 - 0
175.241.39.59 - - [01/Jan/2014:08:30:12 +0900] "-" 408 - 0
183.126.29.85 - - [01/Jan/2014:08:30:12 +0900] "-" 408 - 0
27.237.217.135 - - [01/Jan/2014:08:30:12 +0900] "-" 408 - 0
115.17.93.229 - - [01/Jan/2014:08:30:12 +0900] "-" 408 - 0
115.6.162.13 - - [01/Jan/2014:08:30:12 +0900] "-" 408 - 0
175.226.150.11 - - [01/Jan/2014:08:30:12 +0900] "-" 408 - 0
175.237.197.228 - - [01/Jan/2014:08:30:12 +0900] "-" 408 - 0
175.243.106.130 - - [01/Jan/2014:08:30:12 +0900] "-" 408 - 0
175.253.245.20 - - [01/Jan/2014:08:30:12 +0900] "-" 408 - 0
118.54.3.227 - - [01/Jan/2014:08:30:12 +0900] "-" 408 - 0
115.14.245.163 - - [01/Jan/2014:08:30:12 +0900] "-" 408 - 0

and the count of 408 is like this

[root@POSTIMG6 logs]# grep " 408 " access.20131001.log | wc -l
48
[root@POSTIMG6 logs]# more access.20131001.log | wc -l
10148069
[root@POSTIMG6 logs]# grep " 408 " access.20131002.log | wc -l
40
[root@POSTIMG6 logs]# grep " 408 " access.20131003.log | wc -l
66
[root@POSTIMG6 logs]# grep " 408 " access.20131004.log | wc -l
77
[root@POSTIMG6 logs]# grep " 408 " access.20131005.log | wc -l
64
[root@POSTIMG6 logs]# grep " 408 " access.20131006.log | wc -l
53
[root@POSTIMG6 logs]# grep " 408 " access.20131101.log | wc -l
1013
[root@POSTIMG6 logs]# grep " 408 " access.20131115.log | wc -l
2145
[root@POSTIMG6 logs]# grep " 408 " access.20131130.log | wc -l
1668
[root@POSTIMG6 logs]# grep " 408 " access.20131215.log | wc -l
2859
[root@POSTIMG6 logs]# grep " 408 " access.20131216.log | wc -l
3453
[root@POSTIMG6 logs]# grep " 408 " access.20131217.log | wc -l
1747
[root@POSTIMG6 logs]# grep " 408 " access.20131218.log | wc -l
4008
[root@POSTIMG6 logs]# grep " 408 " access.20131219.log | wc -l
7000
[root@POSTIMG6 logs]# grep " 408 " access.20131220.log | wc -l
23146
[root@POSTIMG6 logs]# grep " 408 " access.20131221.log | wc -l
9503
[root@POSTIMG6 logs]# grep " 408 " access.20131222.log | wc -l
101
[root@POSTIMG6 logs]# grep " 408 " access.20131223.log | wc -l
20689
[root@POSTIMG6 logs]# more access.20131223.log | wc -l
14209497
[root@POSTIMG6 logs]# grep " 408 " access.20131224.log | wc -l
10163
[root@POSTIMG6 logs]# grep " 408 " access.20131230.log | wc -l
10946




I search the code of 408 and there are some reasons like this

- the leak of the apache timeout value
- ddos attacks and etc

but I thinks there is not matching above reasons because the old one is not a 
problem and L4 above the web servers is balancing to the old and new servers in 
no issues.

 I fine some changes between 2.2.17 and 2.2.18 I want to know that the mean of 
chanelog at 2.2.18 and it will be the reason the 408 status codes.

===========================================================
Changes with Apache 2.2.18

  *) core: Only log a 408 if it is no keepalive timeout. PR 39785
     [Ruediger Pluem,  Mark Montague <markmont umich.edu<http://umich.edu/>>]
 ===========================================================
I understood this substance that if it is no keepalive timeout in apache, all 
request is return the 408 code. but all of the request are not a return 408 
code.

my Questions?
1) which case the code of 408 is mainly cause??

2) what is the meaning of this changes(in 2.2.18) of the sentence?

thanks a lot!!

Reply via email to