Azure网站上的ImageResizer清理问题

时间:2014-08-04 16:12:23

标签: azure imageresizer imageresizer-diskcache

我们正在使用ImageResizer模块,带有配置的diskCache插件

<diskCache autoClean="true" hashModifiedDate="true" subfolders="256" cacheAccessTimeout="15000"/>
<cleanupStrategy startupDelay="00:05"
               minDelay="00:00:20"
               maxDelay="00:05"
               optimalWorkSegmentLength="00:00:04"
               avoidRemovalIfCreatedWithin="12:00"
               avoidRemovalIfUsedWithin="1.00:00"
               prohibitRemovalIfUsedWithin="00:05"
               prohibitRemovalIfCreatedWithin="00:10" 
       maximumItemsPerFolder="4096"/>

通过这种清理配置,我们有253个子文件夹,每个文件夹有8000-10000个文件,3个子文件夹有200 000-300 000个文件(在图像缓存中)。清理似乎部分工作。这种行为可能是什么原因?如何监控清理过程?

1 个答案:

答案 0 :(得分:2)

听起来你有超过300万个活动文件;使用该数字,您需要将“子文件夹”设置更改为16384.如果要约束缓存大小,请减少“maximumItemsPerFolder”值。

NTFS在单个目录中的大量文件变得非常慢。这3个目录可能已经变得如此之大,直接列表会导致超时或错误,并且无法自动清除它们。

请记住,删除缓存目录并更改子文件夹设置后,您可能会遇到高CPU使用率,直到重新填充缓存。如果您有多个核心且使用默认的GDI +管道(WIC和FreeImage不受影响),那么您可能还需要打开Web园以匹配您的核心数。

一般来说,限制缓存是一个坏主意,以便在几分钟内编写文件并随后删除(这似乎就是这种情况)。如果您没有足够的本地磁盘空间,最好使用其中一个内存缓存插件或类似Varnish。