You might want to look at this Github issue here. Magento is compiling a list of product IDs to send as a cache header but the header ends up being too long because the header string includes all children of each of the configured items in the result set. This was happening for us on one listing specific pagelisting page, but it's really any result that has too many configured items.
I was able to fix it by making the change recommended in the last comment:
Edit vendor/magento/module-configurable-product/Model/Plugin/Frontend/ProductIdentitiesExtender.php
Comment out the line here (or the whole block):
foreach ($this->configurableType->getChildrenIds($subject->getId()) as $childIds) {
foreach ($childIds as $childId) {
// $identities[] = Product::CACHE_TAG . '_' . $childId;
}
}
For me this was line 40.