Concurrency Geoserver在处理文件时无法接受并发请求

Concurrency Geoserver在处理文件时无法接受并发请求,concurrency,locking,task,scaling,geoserver,Concurrency,Locking,Task,Scaling,Geoserver,我正在尝试将Geoserver设置为MVC应用程序的后端。Geoserver工作得很好…只是它一次只能让我做一件事。如果我正在处理一个shapefile,REST界面和GUI将被锁定,直到任务完成为止 我知道可以选择集群一个geoserver配置,但这只是负载平衡,所以我会选择两个,而不是一个读/写操作……但我们需要一次将其扩展到至少20个并发任务 我在互联网上看到的所有参考文献都提到要锁定并发连接的数量,但在整个时间内只允许1个 显然,GeoServer用于同时具有多个请求的生产环境中。我只是

我正在尝试将Geoserver设置为MVC应用程序的后端。Geoserver工作得很好…只是它一次只能让我做一件事。如果我正在处理一个shapefile,REST界面和GUI将被锁定,直到任务完成为止

我知道可以选择集群一个geoserver配置,但这只是负载平衡,所以我会选择两个,而不是一个读/写操作……但我们需要一次将其扩展到至少20个并发任务

我在互联网上看到的所有参考文献都提到要锁定并发连接的数量,但在整个时间内只允许1个

显然,GeoServer用于同时具有多个请求的生产环境中。我只是对如何实现这一目标感到困惑

几周前,我的同事向Geoserver开发团队发送了这封电子邮件,问题被描述为配置锁……通过更改变量,我们可以释放它。我唯一看到这个变量的地方是GitHub上的源代码

有没有办法在Geoserver的一个配置文件中指定关闭这些锁,以便我可以执行并发读/写操作?如果有人曾经遇到过这种情况,请帮助!!!谢谢

2014年5月16日星期五晚上7:34,肖恩·温斯泰德写道:

我们正在使用Geoserver2.5RC2。通过REST上载形状文件时 API时,服务器直到形状完成后才响应其他请求 文件已被处理

例如,如果我启动文件上载,然后单击“层”菜单 在web应用程序中,直到 文件上传和处理完成后

我研究了这个问题,但没有找到合适的原因/答案。我做的 安装控制流扩展并创建controlflow.properties 文件,但这似乎没有任何效果。​

如何诊断这种行为的原因

很简单,这是配置锁。我们的配置子系统不可用 能够处理正确的并发写入, 或在写入期间读取,因此有一个完整的实例读/写锁 每次你用剩下的都会被拿走 api和用户界面,锁定到位时无法执行任何操作

如果需要,可以使用系统变量禁用它 GeoServerConfigurationLock.enabled, -DGeoServerConfigurationLock.enabled=true 但当然,我们无法预测如果 你这样做

干杯
Andrea

-DGeoServerConfigurationLock.enabled=true
是指首次启动GeoServer时为java命令提供的启动参数。查看GeoServer的
bin/startup.sh
bin\startup.bat
批准的方法是通过名为
JAVA\u OPTS的环境变量执行此操作。你会看到像这样的线条

if [ -z "$JAVA_OPTS" ]; then
  export JAVA_OPTS="-XX:MaxPermSize=128m"
fi
startup.sh中

if "%JAVA_OPTS%" == "" (set JAVA_OPTS=-XX:MaxPermSize=128m)
startup.bat中
。你需要做这些

JAVA_OPTS=“-DGeoServerConfigurationLock.enabled=true-XX:MaxPermSize=128m”

或者在启动GeoServer之前,以类似方式定义
JAVA_选择
环境变量


但是,开发团队的回答是“当然,如果您这样做,我们无法预测配置会发生什么”,这向我暗示,可能存在并发问题;随着规模的扩大,可能会更频繁地出现。也许您想考虑将这些形状文件的后端处理从REST请求中断开,以便使用某种排队机制,而不是禁用GeoServer的配置锁。

谢谢,我找到了答案。我们甚至不需要这样做,因为我们只为REST界面(admin)使用了一个登录,而不是为每个存储库创建一个新用户,现在锁定问题没有发生