Addressing (hopefully) Alex concerns inline...
On 2014-03-11 02:22, Kinkie wrote:
Hi all,
some of these values are really orthogonal in scope, so I'd love to
see them logged independently. Doing so would however change the
standard logging format, so this proposal is the second best choice
and I support it.
On Sun, Mar 9, 2014 at 6:18 AM, Alex Rousskov wrote:
On 03/07/2014 06:26 PM, Amos Jeffries wrote:
TCP_TUNNEL
- initially for CONNECT requests which Squid serves Direct. Also to
be
used in future if Squid accepts an Upgrade request for protocols like
WebSockets
Okay. Is this better?
- traffic for which Squid is not able to act as a proxy. The
transaction payload/body was tunneled as raw binary to the server.
NP: While I use CONNECT as the common example it is not necessarily the
only request we will have to do this for (ie my mark-1 HTTP/2 patch).
TCP_RELAY
- for requests which Squid serves without even considering the
stored
content. ie CONNECT relayed to cache_peer,
The above two definitions overlap. Please adjust to make them disjoint
if you think both are needed, keeping in mind that:
* Whether the request went direct or to a peer is already covered by
the
"hierarchy code" field and should not be repeated in the "Squid result
code" (a.k.a. "Squid request status" and "Squid status code",
depending
on where one looks) that you propose to expand.
* Request method such as CONNECT is also logged separately.
CONNECT could be either tunneled or relayed.
In the case of RELAY:
- the traffic with server/peer is in a protocol which Squid supports
(HTTP/FTP/Gopher/ICY).
- the inability to cache is defined by the specification for the
method.
- note RELAY is not limited to CONNECT, it could be from TRACE/PUT/POST
or any one of the extension methods.
In the case of TUNNEL
- the traffic with server/peer is in unknown protocol taken from inside
a CONNECT (or equivalent) message verbatim rather than gateway like
FTP/Gopher/etc.
So RELAY could be seen if the peer was another proxy and the CONNECT
being passed on as-is. TUNNEL if the peer were an origin and CONNECT
being delivered there un-wrapped.
* The _MISS suffix is appropriate in both cases (using the current
definition of _MISS at
http://wiki.squid-cache.org/SquidFaq/SquidLogs):
"The response object delivered was the network response object".
Yes these are sub-types of MISS. I was thinking RELAY to be used most
when the RFC prevents cache storage being relevant or checked. We can
drop the definition line below...
requests forced to be MISS by "cache deny" or size limits, etc
The key property being that these can never be a HIT so dont worry
about it when trying to reduce MISS.
The two examples listed above seem to contradict the "key property"
intent stated right after them: If a MISS happens because of "cache
deny
or size limits" one may actually want to "worry" about that
transaction
when "trying to reduce MISS". For example, if I accidentally
misconfigure my Squid to "cache deny all", then I do want to analyze
transactions that missed because of that mistake. I do not want to
ignore those transaction, or I will never find the configuration bug.
If you are looking for that kind of misconfiguration then a TCP_FORCED_*
would be useful. Would you like that added?
I'm tempted to propose that and FORCED_HIT but research in
refresh_pattern where most of those would be relevant shows that
implementing it would be difficult at present.
TCP_SHARED_*
- to indicate collapsed forwarding on the request. Similar in
principle
to the TCP_CLIENT_* and TCP_REFRESH_* labels indicating client forced
something to happen or revalidation took place.
Mainly so people can measure the difference between reguler
HIT/MISS
and SHARED_HIT/MISS to determine if collapsed forwarding is worth it.
I agree that _SHARED_ (and adding sharing stats to the Cache Manager)
can be useful.
Please adjust the definition to clarify that _SHARED_ is going to be
used for all transactions that _started_ collapsed and not just those
that ended collapsed. For example. a request that was initially
collapsed but for which things did not work out (e.g., the master
transaction on which we collapsed got an uncachable response, and
Squid
had to send that request to the origin server in isolation after all)
would most likely be logged as TCP_SHARED_MISS.
This SHARED tag will _not_ be used for the "initial" transaction that
others collapsed on, right? Again, it would be nice if the definition
of
the _SHARED_ tag made that clear[er].
Yes that was the idea exactly.
TCP_SHARED_HIT being when request #2 is collapsed into request #1
TCP_SHARED_MISS being when request #3 is held for collapsing, but is
forced into forwarding with extra lag.
Similar for collapsed revalidations and TCP_SHARED_REFRESH_*.
Amos