On 12/30/22 12:29, Raghav P wrote:
Thank you Alex.

We modified the log format as per your suggestion and here is the relevant log entries (its been parsed) for one such log entry

   "http_method": "CONNECT",
   "request_method_from_client": "CONNECT",
   "request_method_to_server": "CONNECT",
   "status": 200,
   "vendor_action": "TCP_TUNNEL",
   "err_code": "-",
   "err_detail": "-",
   "dest_status": "HIER_DIRECT",
   "response_time": 8612,
   "total_time_milliseconds": 8608,
   "peer_response_time": 0,
   "http_content_type": "-",
   "bytes": 13071,
   "bytes_in": 5373,
   "bytes_out": 7698,
   "sni": "-",
   "X-Forwarded-For": "-"

Several use cases might result in the above combination of fields, but I think the following one is the most likely:

* Squid successfully opened an HTTP CONNECT tunnel to the origin server.

* The client and the origin server exchanged some data.

* The client was either the last to send data or it sent data during the same millisecond when Squid received the last data from the server.

In this use case, we see a clash between %<pt definition that was based on a basic GET request exchange (client sends TCP payload then server sends TCP payload) and the way HTTP CONNECT tunnels usually function when forwarding encrypted traffic (both sides send TCP data from time to time):

[http::]<pt Peer response time in milliseconds. The timer starts
when the last request byte is sent to the next hop
and stops when the last response byte is received.

The above definition makes %<pt measurements useless in many CONNECT tunnel cases. There is even a source code comment about that: "The peer response time (%<pt) stopwatch is currently defined to start when we wrote the entire request. Thus, if we wrote something after the last read, report zero peer response time." In this case, "we wrote" means "we forwarded client bytes to the server" and "the last read" means "the last read from the origin server".


HTH,

Alex.


On Fri, Dec 30, 2022 at 4:01 AM Alex Rousskov <rouss...@measurement-factory.com <mailto:rouss...@measurement-factory.com>> wrote:

    On 12/29/22 16:17, Raghav P wrote:
     > We have a squid proxy configured as a forward proxy. But we see
    that for
     > some requests the log shows peer_response_time =0 but has status
    is 200.
     > At times users on their browser see this as a page not loading.
     >
     > As we couldn't find documentation around this. We wish to know
    what this
     > actually means and if this is an issue how to resolve it.

    It is difficult to say for sure what is going on without a lot more
    details, but it is likely that Squid experienced some kind of an error
    after receiving the beginning of a 200 OK response from the peer. I am
    guessing that when handling certain kinds of errors, Squid may
    forget to
    update the transaction response time clock and log zero. It is also
    possible, in some environments, that the transaction took less than one
    millisecond.

    I recommend configuring Squid to log all the standard fields in "squid"
    logformat, including %Ss (you probably log that already) and to add
    %err_code/%err_detail fields (you probably do not log those now). Share
    the values of those three specific fields (at least) with this mailing
    list. In general, the more logged fields you can share, the higher are
    the chances that somebody here will know what is going on with those
    transactions.

    You may also want to mention whether these transactions are HTTP or
    HTTPS, and, if HTTPS, whether your Squid has ssl_bump rules for those
    transactions.


    HTH,

    Alex.

    _______________________________________________
    squid-users mailing list
    squid-users@lists.squid-cache.org
    <mailto:squid-users@lists.squid-cache.org>
    http://lists.squid-cache.org/listinfo/squid-users
    <http://lists.squid-cache.org/listinfo/squid-users>


_______________________________________________
squid-users mailing list
squid-users@lists.squid-cache.org
http://lists.squid-cache.org/listinfo/squid-users

Reply via email to