我已经使用GeoServer实现了一个web应用程序来提供磁贴地图。为了应用缓存策略,我在PostgreSQL数据库中启用了嵌入式GeoWebCache并设置了平铺页面。磁盘配额设置为5MB,采用LFU方式测试超过配额限制时的截断行为。当缓存量超过5 MB并且GeoWebCahe删除所有磁贴而不考虑每个磁贴的"frequency_of_use“时,问题就会显现出来。这是预期的行为吗,因为我认为它应该首先删除最少使用的磁贴。
<!-- geowebcache-diskquota.xml -->
<gwcQuotaConfiguration>
<enabled>true</enabled>
<cacheCleanUpFrequency>10</cacheCleanUpFrequency>
<cacheCleanUpUnits>SECONDS</cacheCleanUpUnits>
<maxConcurrentCleanUps>2</maxConcurrentCleanUps>
<globalExpirationPolicyName>LFU</globalExpirationPolicyName>
<globalQuota>
<value>5</value>
<units>MiB</units>
</globalQuota>
<quotaStore>JDBC</quotaStore>
</gwcQuotaConfiguration>和geowebcache-file配额-jdbc.xml文件:
<gwcJdbcConfiguration>
<dialect>PostgreSQL</dialect>
<JNDISource>java:comp/env/jdbc/gwc</JNDISource>
<connectionPool>
<driver>org.postgresql.Driver</driver>
<url>jdbc:postgresql://localhost:5432/gwc</url>
<username>postgres</username>
<password></password>
<minConnections>1</minConnections>
<maxConnections>10</maxConnections>
<connectionTimeout>10000</connectionTimeout>
<maxOpenPreparedStatements>50</maxOpenPreparedStatements>
</connectionPool>
</gwcJdbcConfiguration>发布于 2020-02-09 16:24:27
磁盘配额机制不跟踪每个单个区块,而是跟踪其统计数据作为一个单元来跟踪的区块组,以减小记账数据库大小。
我不知道实现的细节,以至于不能告诉您一个磁贴页面有多大,但是对于一个可能有数百5MB的磁贴缓存,如果最小跟踪单元超过5MB,我也不会感到惊讶。如果是这种情况,那么删除5MB配额中所有可用磁贴的可能性很大。
https://stackoverflow.com/questions/60134577
复制相似问题