On 22/6/2019 17:36, Wietse Venema wrote:
Sharing a non-persistent cache (memcache) is the only option because it can respond with low latency both for old and new queries. But that of course limits the cache size. Sharing a persistent cache is not an option because that requires a DBMS with milliscond query latency (with a query latency of 50ms, one postscreen instance would handle at most 20 clients per second).
DBMS would very possibly be slow for large backscatter scenarios.
You could try to combine a shared memcache and a shared persistent cache, but that will only improve the best case where most connections come from a limited set of clients. The memcache will not improve the worst case, for example a backscatter scenario where most clients are clients new. In that case the postscreen performance would be exactly as bad as in the previous paragraph.
Wouldn't the worst case scenario with many new clients improve also by reducing latency though? I suspect this has a lot to do with DNSBL response time(???) or maybe there are other important delay factors besides that? What I have in mind is a local only postscreen DNSBL and the 50ms can easily go down to a millisecond.
With Internet services, it would be a mistake to optimize the best case only; especially if it makes worst-case behavior worse.
Lefteris