Bug #72043
closedFile cache clearing inefficient causing backend timeout
0%
Description
When using the FileBackend for: cache_hash, cache_pages, cache_pagesection, cache_rootline, TYPO3 is inefficient in clearing cache causing massive io action, which can lead to a timeout of the backend. Each time time a page is added, the \TYPO3\CMS\Core\DataHandling\DataHandler will collect all pageId_{uid} tags (from DataHandler:7168 in 6.2.15) that need flushing.
After that, all files in the directories Cache/Data/cache_hash, Cache/Data/cache_pages, Cache/Data/cache_pagesection and Cache/Data/cache_rootline are opened and (though partially) read and compared with the pageId_ tag.
This opening and reading of all files is repeated for each of the collected pageId tags. In my case this can result in over 80000 file_get_content actions in de FileBackend for adding a single page.
In an attempt for a work around I added a TCEMAIN.clearCacheCmd = pages in my pageTSConfig. But in that case, first all sibling pages are collected and those pageId_{uid}'s are one at the time removed as described above (from DataHandler:7197), after which the entire cache directories are removed without the reading interaction. Resulting in a massive load of pointless io.
To fix this I've implemented a hook:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearCachePostProc'][] to call $this->clear_cacheCmd('pages');
before the inefficient cache clearing. So I in my opinion these 2 things should be fixed:
- Can you combine the checking of all these tags so the cache files only need to be read a single time.
- Can you perform clearCacheCmd = pages instead of clearing some of the pageId tag before doing the clearCacheCmd = pages afterwards.
Updated by Markus Klein almost 9 years ago
- Target version deleted (
6.2.16)
Can you create a patch and push it to Gerrit?
Updated by Riccardo De Contardi over 8 years ago
- Status changed from New to Closed
I close this in favor of #53467 - please continue the discussion there (the issues are also related).
If you think this is the wrong decision, then let us know (on Slack for example - https://typo3.slack.com/ ) or open a new ticket and add a relation to this ticket number. Thank you