[squid-users] Proxy server to support a large number of simultaneous requests

Andrey K ankor2023 at gmail.com
Tue Jun 6 13:07:33 UTC 2023


Hello, Alex,

I have shortened the correspondence because it does not meet the size
requirements for the mailing list.

Thank you so much for your time, the analysis and recommendations.

I disabled the cache_dir and now squid works as expected -  there is only
one request to the original content server:
- on the small file:
      1 NONE_NONE/503/- HIER_NONE/-
      4 TCP_CF_HIT/200/- HIER_NONE/-
    128 TCP_HIT/200/- HIER_NONE/-
    366 TCP_MEM_HIT/200/- HIER_NONE/-
      1 TCP_MISS/200/200 FIRSTUP_PARENT/parent_proxy

- on the large file:
     17 TCP_CF_HIT/200/- HIER_NONE/-
    482 TCP_HIT/200/- HIER_NONE/-
      1 TCP_MISS/200/200 FIRSTUP_PARENT/parent_proxy

I think this configuration is perfect for caching online video broadcasts.
Chanks of video are required by clients simultaneously only for a short
period of time, so there is no need to save them to disk..
As my VM has 32 GB of RAM, I can configure a sufficient amount of
cache_mem, say 20000 MB to provide caching of video broadcasts.


Kind regards,
     Ankor.


>
> пн, 5 июн. 2023 г. в 17:31, Alex Rousskov <
> rousskov at measurement-factory.com>:
>
>> On 6/2/23 03:29, Andrey K wrote:
>>
>> >  > Can you repeat this test and share a pointer to the corresponding
>> >  > compressed cache.log, containing those 500 (or fewer, as long as the
>> >  > problem is reproduced!) concurrent transactions. One or many of those
>> >  > concurrent transactions resulted in the unwanted entry deletion. The
>> log
>> >  > may show what happened in that case.
>>
>> > I cleared the rock cache, set the debug level, restarted squid, cleared
>> > the cache.log, ran 500-threads test, waited for it to finish and
>> > launched curl to make sure it returned TCP_MISS.
>> > Then stopped squid to limit the cache.log file.
>>
>>
>> Thank you for sharing that log! I only had time to study a few misses.
>> They all stemmed from the same sequence of events:
>>
>> 1. A collapsed request finds the corresponding entry in the cache.
>> 2. Squid decides that this request should open the disk file.
>> 3. The rock disk entry is still being written (i.e. "swapped out"),
>>     so the attempt to swap it in fails (TCP_SWAPFAIL_MISS).
>> 4. The request goes to the origin server.
>> 5. The fresh response deletes the existing cached entry.
>> 6. When a subsequent request finds the cached entry marked for
>>     deletion, it declares a cache miss (TCP_MISS) and goes to step 4.
>>
>> Disclaimer: The above sequence of events causes misses, but it may not
>> be the only or even the primary cause. I do not have enough free time to
>> rule out or confirm other causes (and order them by severity).
>>
>>
>> Squid can (and should) handle concurrent swapout/swapins better, and we
>> may be able to estimate that improvement potential for your workload
>> without significant development, but, for the next step, I suggest
>> disabling cache_dir and testing whether your get substantially better
>> results with memory cache alone. Shared memory cache also has periods
>> where a being-written entry cannot be read, but, compared to the disk
>> cache, those periods are much shorter IIRC. I would like to confirm that
>> this simplified mode of operation works well for your workload before I
>> suggest code changes that would rely, in part, on this mode.
>>
>>
>> Thank you,
>>
>> Alex.
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squid-cache.org/pipermail/squid-users/attachments/20230606/e2c4867b/attachment.htm>


More information about the squid-users mailing list