故障排除¶
本节将与集成的geoWebcache及其解决方案讨论一些常见问题。
网格不对齐¶
有时从geoWebcache端点请求数据时会发生错误。显示的错误可能表示“不支持分辨率”或“边界不对齐”。这是由于客户端发出的WMS请求与geoWebcache创建的瓦片网格不对齐,例如地图边界或层边界不同,或者分辨率不受支持。如果您使用Openlayers作为客户机,查看所包含演示的源代码可能会提供更多匹配网格的线索。
另一种解决方法是实现WMS与地理服务器WMS的直接集成。你可以把这个放在 缓存默认值 页。
直接WMS集成¶
直接集成允许通过geoserver服务的WMS请求被缓存,就像geoWebcache接收和处理它们一样。通过直接的WMS集成,请求可以由geoserver wms或geoWebcache wms处理。
有时,应该转到geoWebcache的请求将被传递到geoServer,从而不会保存任何图块。也就是说,可以确定geoWebcache在预期的情况下没有处理请求的原因。这是通过使用命令行实用程序完成的 cURL 以及检查响应头。
首先,获取样本请求。通过转到给定层的层预览,设置 Tiled 参数到 Tiled ,然后右键单击地图的某个区域并将完整路径复制到图像位置。如果操作正确,结果将是一个如下所示的GET请求:
http://localhost:8090/geoserver/nurc/wms?LAYERS=nurc%3AArc_Sample&STYLES=&FORMAT=image%2Fjpeg&TILED=true&TILESORIGIN=-180%2C-90&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG%3A4326&BBOX=-45,-45,0,0&WIDTH=256&HEIGHT=256
然后可以将此URL粘贴到curl请求中:
curl -v "URL"
例如:
curl -v "http://localhost:8090/geoserver/nurc/wms?LAYERS=nurc%3AArc_Sample&STYLES=&FORMAT=image%2Fjpeg&TILED=true&TILESORIGIN=-180%2C-90&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG%3A4326&BBOX=-45,-45,0,0&WIDTH=256&HEIGHT=256"
备注
要忽略终端的原始图像输出,请将输出通过管道传输到系统的空值。在Linux/OS X上,附加 > /dev/null
对于这些请求,并在Windows上附加 > nul
.
如果请求没有通过geowebcache的wms,那么在自定义响应头中将给出一个原因。查找以下响应头:
geowebcache-cache-result
:会说HIT
如果geoWebcache wms处理了请求,并且MISS
否则。geowebcache-miss-reason
:如果上面显示为MISS
,这将生成一个简短的描述,说明为什么geoWebcache wms不处理请求。
下面是一些随响应一起发出的请求示例。这些响应被截断,只显示与故障排除相关的信息。
成功的请求¶
此请求已由geoWebcache wms成功处理。
请求:
curl -v "http://localhost:8080/geoserver/topp/wms?TILED=true&LAYERS=states&FORMAT=image/png&REQUEST=GetMap&STYLES=&SRS=EPSG:4326&BBOX=-135,45,-112.5,67.5&WIDTH=256&HEIGHT=256"
回复:
< HTTP/1.1 200 OK
< Content-Type: image/png
< geowebcache-crs: EPSG:4326
...
< geowebcache-layer: topp:states
< geowebcache-gridset: EPSG:4326
< geowebcache-tile-index: [2, 6, 3]
...
< geowebcache-cache-result: HIT
< geowebcache-tile-bounds: -135.0,45.0,-112.5,67.5
...
高度参数错误¶
geoWebcache wms不处理以下请求,因为请求的图像(256x257)不符合预期的256x256磁贴大小。
请求:
curl -v "http://localhost:8080/geoserver/topp/wms?TILED=true&LAYERS=states&FORMAT=image/png&REQUEST=GetMap&STYLES=&SRS=EPSG:4326&BBOX=-135,45,-112.5,67.5&WIDTH=256&HEIGHT=257"
回复:
< HTTP/1.1 200 OK
< Content-Type: image/png
< geowebcache-miss-reason: request does not align to grid(s) 'EPSG:4326'
...
没有关联的瓦片层¶
geoWebcache wms不处理以下请求,因为请求的层没有配置磁贴层。
请求:
curl -v "http://localhost:8080/geoserver/topp/wms?TILED=true&LAYERS=tasmania_roads&FORMAT=image/png&REQUEST=GetMap&STYLES=&SRS=EPSG:4326&BBOX=-135,45,-112.5,67.5&WIDTH=256&HEIGHT=256"
回复:
< HTTP/1.1 200 OK
< Content-Type: image/png
< geowebcache-miss-reason: not a tile layer
...
缺少参数筛选器¶
以下请求不由geoWebcache wms处理,因为该请求包含未为此层配置的参数筛选器(bgcolor)。
请求:
curl -v "http://localhost:8080/geoserver/topp/wms?BGCOLOR=0xAAAAAA&TILED=true&LAYERS=states&FORMAT=image/png&REQUEST=GetMap&STYLES=&SRS=EPSG:4326&BBOX=-135,45,-112.5,67.5&WIDTH=256&HEIGHT=256"
回复:
< HTTP/1.1 200 OK
< Content-Type: image/png
< geowebcache-miss-reason: no parameter filter exists for BGCOLOR
...
CRS未定义¶
geoWebcache wms不处理以下请求,因为该请求引用的CRS(epsg:26986)与任何瓦片层网格集都不匹配:
请求:
curl -v "http://localhost:8080/geoserver/topp/wms?TILED=true&LAYERS=states&FORMAT=image/png&REQUEST=GetMap&STYLES=&SRS=EPSG:26986&BBOX=-135,45,-112.5,67.5&WIDTH=256&HEIGHT=256"
回复:
< HTTP/1.1 200 OK
< Content-Type: image/png
< geowebcache-miss-reason: no cache exists for requested CRS
...
工作区样式¶
如果缓存层使用绑定到工作区的样式,则需要在该工作区的上下文中查看该层,以使该样式可见。尝试缓存这样的层会导致错误。
默认情况下,嵌入的geoWebcache使用全局工作区。可以使用 WORKSPACE
参数。要启用此功能,请为名为 WORKSPACE
.将默认值设置为包含样式的工作区的名称。在大多数情况下,设置其他值并不有用。
将样式移动到新工作区需要更新筛选器。
此参数仅适用于集成瓦片层。如果要将远程geoserver上的geoserver层直接添加到gwc中,请像通常那样将工作区指定为路径的一部分。