Sat Aug 28 04:56:38 JST 1999 getstats.12.c の弱点 * 長い URL (1000 文字ぐらい) で core を吐いてしまう これは MAXLINE を増やせば良い (デフォルトは 1000) 増やすタイミングはこんな時 gdb ./getstats (gdb) run -l ../access_log Program received signal SIGSEGV, Segmentation fault. 0x6dc7 in getcommondateaddress ( logline=0xefbfd3d4 "192.168.6.237 - - [27/Aug/1999:09:06:26 +0900] \"GET http://lw2fd.hotmail.msn.com/cgi-bin/HoTMaiL?disk=216.32.180.68_d447&login=p930903495.54=on&MSG930903499.24=on&MSG931152926.11=on&MSG931335944."..., date=0xefbfcf44 "xxx Aug 27 09:06:26 1999", address=0xefbfd190 "192.168.6.237", request=0xefbfd1e0 "http://lw2fd.hotmail.msn.com/cgi-bin/HoTMaiL", filesize=0xefbfceb8) at getstats.12.c:2340 2340 if (*c != '-') { (gdb) * SSL/CONNECT をエラーとしてしまう * ステータス 4xx (Client Errors) を Number of malformed requests でカ ウントしてしまう Apache の http_protocol.c では "403 Forbidden" * 同じく 5xx (Server Errors) も Number of malformed requests でカウン トしてしまう。出来れば 4xx, 5xx ぐらいは分けたい * 例えばこんなログは処理仕切れないので可能な限り parse するように修正 1.2.3.4 - - [27/Aug/1999:12:08:14 +0900] "GET http://server/foo" HTTP/1.0" 404 211 0.691+0.571:N:4+ "Mozilla/4.6 [ja] (Win95; I)" foo" の " が悪さをする... * ついで... サマリ部分にパーセントを表示するようにした。 < Number of HTML requests: 17195 < Number of script requests: 3910 < Number of non-HTML requests: 150110 < Number of malformed error requests (all dates): 539 < Number of client error (4xx) requests (all dates): 13515 < Number of server error (5xx) requests (all dates): 899 < Total number of all requests/errors: 186168 > Number of HTML requests: 17195 (9.2%) > Number of script requests: 3910 (2.1%) > Number of non-HTML requests: 150110 (80.6%) > Number of malformed error requests (all dates): 539 (0.3%) > Number of client error (4xx) requests (all dates): 13515 (7.3%) > Number of server error (5xx) requests (all dates): 899 (0.5%) > Total number of all requests/errors: 186168