<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<div name="messageBodySection">
<div dir="auto">Thank you for the advice, Alex.<br />
<br />
I just wanted to update anyone following or who might follow that the problem ended up being in<br />
my Logstash server, not in Squid, it performed too slow due to a miss configuration, so Squid kept<br />
sending logs but the slow server got over flooded.<br />
<br />
After fixing the server I simply set these configuration normally:<br />
access_log tcp://server:port logformat=logs</div>
</div>
<div name="messageSignatureSection"><br />
<div dir="auto">and everything seems to be working fine by default.</div>
<div dir="auto"><br /></div>
<div dir="auto">I did however notice that UDP does aggregate logs before sending them, and TCP does not,</div>
<div dir="auto">even when set explicitly.</div>
<div dir="auto"><br /></div>
<div dir="auto">If anybody runs into this issue in the future it might be worth to follow Alex advice on how to get </div>
<div dir="auto">this to work.</div>
<div dir="auto"><br /></div>
<div dir="auto">Thanks,</div>
<div dir="auto">Roee</div>
<div dir="auto"><br /></div>
<div dir="auto"><br /></div>
</div>
<div name="messageReplySection">On 13 Sep 2022, 6:30 +0300, Alex Rousskov <rousskov@measurement-factory.com>, wrote:<br />
<blockquote type="cite" style="border-left-color: grey; border-left-width: thin; border-left-style: solid; margin: 5px 5px;padding-left: 10px;">On 9/12/22 18:20, roee klinger wrote:<br />
<br />
<blockquote type="cite">Thank you for your advice, as suggested I tested a both TCP and UDP, and<br />
found TCP to be so slow<br />
that is it practically unusable, UDP however works fine, but has the<br />
normal disadvantages of UDP.<br /></blockquote>
<br />
Glad that test yielded useful results in your environment!<br />
<br />
<br />
<blockquote type="cite">It seems that TCP sends each message by itself, and UDP sends them in<br />
bulk (10-20 at a time),<br />
which seems to be a big part of the performance difference, in fact TCP<br />
is so slow that it causes Squid to crash after a while.<br />
<br />
After carefully reading the logs, I tried to get TCP to send in bulk as<br />
well by configuring:<br />
<br />
logformat logstash %ts.%03tu %6tr %>a %<la %>lp %Ss/%03>Hs %<st %rm<br />
%ru %[un %Sh/%<a %mt %{Client-Tags}>h<br />
access_log tcp://127.0.0.1:5400 logformat=logstash buffer-size=64KB<br />
buffered_logs on<br />
<br />
But it seems to still be sending the logs line by line, am I missing<br />
something?<br /></blockquote>
<br />
<br />
I have not tested this, but if my interpretation of the underlying code<br />
is correct, then the TCP logging module code does not flush the buffer<br />
when it accumulates (close to) buffer-size bytes. Instead, the module<br />
starts writing its buffer after accumulating more than 16KB (2*MAX_URL).<br />
How long are your typical access.log records?<br />
<br />
Each write(2) call of a buffering TCP logging module during normal Squid<br />
operation should be 16KB, regardless of the buffer-size setting.<br />
<br />
FWIW, the official access_log buffer-size documentation hints at<br />
module-specific flushing algorithms. I cannot describe the exact<br />
algorithm used by the TCP logging module in a few words, but it is not<br />
as simple as "accumulate buffer-size bytes and then write the<br />
accumulated bytes".<br />
<br />
<br />
HTH,<br />
<br />
Alex.<br />
<br />
<br />
<blockquote type="cite">On 9 Sep 2022, 19:57 +0300, Alex Rousskov wrote:<br />
<blockquote type="cite">On 9/9/22 08:49, roee klinger wrote:<br />
<blockquote type="cite">Hello,<br />
<br />
I have just recently started exploring ingesting logs from Squid via<br />
Logstash (TCP log ingestion)<br />
<br />
I now have to make the decision of how to deploy Logstash, it seems to<br />
me that I have two options:<br />
<br />
1. Deploy a Logstash instance for every region where I have a Squid<br />
instance running, resulting in the lowest latency possible between<br />
Squid and Logstash.<br />
2. Deploy a central Logstash instance for all Squid instance worldwide,<br />
which is the cheapest and easiest option, but will have high latency<br />
for some of the Squid instance which are located far away<br />
geographically from the Logstash instance.<br />
<br />
I already know that if the log server crashes in Squid, then Squid will<br />
crash with a fatal error,<br /></blockquote>
<br />
FYI: Logging error handling is configurable via "access_log on-error".<br />
<br />
<br />
<blockquote type="cite">so Squid takes logging very seriously, so my<br />
question is: does TCP logging performance in Squid effect the total<br />
request performance, or are they independent from each other?<br /></blockquote>
<br />
TCP logger uses asynchronous non-blocking I/O. Individual HTTP<br />
transactions do not wait for individual log records to be sent. Needless<br />
to say, logging does consume resources and, hence, may affect overall<br />
HTTP transaction performance. And if the log record recipient is too<br />
slow, then Squid will die and/or log records will be dropped.<br />
<br />
<br />
<blockquote type="cite">What would be you recommendations, if request performance is crucial<br />
(and log performance is not)?<br /></blockquote>
<br />
I would not be surprised if you would not be able to measure meaningful<br />
performance difference among these modules. From general performance<br />
point of view, and module-specific bugs and limitations notwithstanding,<br />
I would expect "daemon" and "udp" modules to have smaller performance<br />
overhead/cost for Squid workers than the "tcp" module because I expect<br />
that TCP has to "do more" than stdout I/O and UDP. However, I would not<br />
base this decision on such high-level speculations and test various<br />
options instead.<br />
<br />
<br />
HTH,<br />
<br />
Alex.<br />
_______________________________________________<br />
squid-users mailing list<br />
squid-users@lists.squid-cache.org<br />
http://lists.squid-cache.org/listinfo/squid-users<br /></blockquote>
</blockquote>
<br /></blockquote>
</div>
</body>
</html>