Computing Byte-wise Statistics of Connections to Origin Servers

From: CNL Squid Users List <squid-users@dont-contact.us>
Date: Mon, 19 Jul 1999 09:22:14 +0530

Hi!

        We are an ISP in India. We wish to compute:

                 the fraction of bytes "Completely" transferred. (successful download)
                 the fraction of bytes "Partially" transferred (read timeout, user abort)
                 the fraction of bytes "Erroneously" transferred (file not found)

        I append a portion of our perl script we use to process the logs.
        Please let me know if I have made any mistakes.

        Question/Doubts:

        1. Why would a TCP_MISS result in 0 bytes being transferred?
                Is this a valid case?
        2. Does TCP_IMS_HIT results in a connection to the origin server?
        3. Why would a TCP_CLIENT_REFRESH result in 0 bytes being transferred?
                Is this a valid case?
        4. When we get a ZERO_SIZED_OBJECT, does it mean we received the HTTP
                header, but not the data, or does it mean we did not receive
                either the header, or the data.
        5. Does a TCP_IMS_MISS result in a connection to the origin server?
                I think so. Not sure. Does it result in a re-download of the URL's
                contents.
        6. What should I take to be the value of average HTTP response header size?
        7. Is there a simpler way I can use to find what requests resulter in a
                connection to the wan transfer. And how bytes came in from the
                origin server?
        
        Thanks.

Dinesh

----
	# process only cache non-hits (dangers: process errors only if required)
	if ($squid_english_code eq "TCP_MISS") {
		$cnb += $nb;
		warn "ERROR: TCP_MISS should not have zero byte transfer" if ($nb == 0);
	} elsif ($squid_english_code eq "ERR_CONNECT_FAIL") {
		# BUGFIX:
		next; # no wan xfer
	} elsif ($squid_english_code eq "ERR_READ_ERROR") {
		$enb += $nb; # BUG: remove http error message code
	} elsif ($squid_english_code eq "TCP_IMS_HIT") {
		next; # ignoring this = i DO NOT KNOW HOW TO PROCESS
	} elsif ($squid_english_code eq "TCP_REFRESH_HIT") {
		$cnb += $http_header_nb; # ignoring this = i DO NOT KNOW HOW TO PROCESS
		warn "ERROR: TCP_REFRESH_HIT should not have zero byte transfer" if ($http_header_nb == 0);
	} elsif ($squid_english_code eq "ERR_CLIENT_ABORT") {
		$pnb += $nb; # BUG? : does this include error message if any
	} elsif ($squid_english_code eq "TCP_CLIENT_REFRESH") {
		$cnb += $nb; # BUG? : does this include error message if any
		warn "ERROR: TCP_CLIENT_REFRESH should not have zero byte transfer" if ($nb == 0);
	} elsif ($squid_english_code eq "TCP_DENIED") {
		# BUGFIX: error was included in nreqs, now not being included
		next; # no wan connection
	} elsif ($squid_english_code eq "TCP_REFRESH_MISS") {
		$cnb += $nb; # wan connection - fresh object loaded from internet
		warn "ERROR: TCP_REFRESH_MISS should not have zero byte transfer" if ($nb == 0);
	} elsif ($squid_english_code eq "ERR_DNS_FAIL") {
		# BUGFIX: error was included in nreqs, now not being included
		next; # no wan connection - http-wise
	} elsif ($squid_english_code eq "ERR_INVALID_URL") {
		# BUGFIX: error was included in nreqs, now not being included
		next; # no wan connection - http-wise
	} elsif ($squid_english_code eq "TCP_REF_FAIL_HIT") {
		# no response from the origin server, outbound http request sent,
		# but no inbound http response
		# NOTE: TODO: actually another measure of healthiness
		next; # no response (i think) so returned stale object
	} elsif ($squid_english_code eq "ERR_READ_TIMEOUT") {
		$pnb += $nb; #  this is a partial xfer
	} elsif ($squid_english_code eq "ERR_ZERO_SIZE_OBJECT") {
		# BUGFIX: error was included in nreqs, now not being included
		next; # no byte came in via inbound link on the wan
	} elsif ($squid_english_code eq "TCP_IMS_MISS") {
		$cnb += $nb; # wan connection done - I AM NOT SURE ABOUT THIS
		warn "ERROR: TCP_IMS_MSS should not have zero byte transfer" if ($nb == 0);
	} else {
		die "$tascii $squid_english_code [$_]";
		# die "$tascii $squid_english_code [$_]" unless ($squid_english_code eq "TCP_MISS");
	}
------
Received on Sun Jul 18 1999 - 22:03:52 MDT

This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:47:27 MST