我们大体都知道ArcSDE的连接数有 48 的限制,很多人也知道这个参数可以修改,并且每种操作系统能支持的最大连接数是不同的。
如果应用报错:超出系统最大连接数 该如何处理?
两种解决办法:
第一,首先确定是否一定需要增加这个最大连接数。
在我们平常的应用中, 特别是给多用户的实施过程中。 有时会出现图形库莫名的连接不上,如果用ARCMAP或ARCCATALOG连接的时候还会提示错误信息 “Failed to connect to database. Maximum number of conections to instance exceeded”。 错误提示非常清晰, 可是怎么解决呢? 很多时候的解决办法都是重启SDE服务或删除SDE服务所在机器上的GSRVR.EXE进程。 这虽然可以解决当前的问题,但过一段时间后又会出现同样的状况, 不胜其扰。
SDE本身默认设置的最大连接数为48个。一般来说不可能同时有这么多用户一起连接图形数据库。并且我们的系统以及ARCMAP或ARCCATALOG等桌面软件在退出的时候也会删除与数据库的连接。但为什么还会出现超出最大连接数的问题呢?在经过多次的尝试之后发现:当系统异常退出,或连接上图形数据库时强行拔除网线等非常规操作时。SDE服务器上的连接进程以及数据库中记录的SDE的用户连接数等记录无法删除。导致无效的连接越来越多, 最终达到了他的极限, 出现错误在所难免。
我们可以通过敲入如下命令查看当前SDE的一些基本设置参数:sdemon –o info –I config。也可以通过命令查看当前用户连接数:sdemon –o info –I users, (在sdemon命令后加上?就可以查看该命令的所有参数信息)。 在为用户设置最大连接数的时候, 需要预估一下在同一时间最多可能会有多少个连接进程。在SDE中开启的进程数和连接用户数是随着实例计算的, 如一台机器打开N个ARCMAP并连上数据库后, 就有N个连接进程和N个连接用户的记录。
如果确认好最大连接数后就可以进行设置了。
方法一:用PLSQL或TOAD打开SDE用户下的表SEVER_CONFIG,编辑字段CONNECTIONS 值为你的最大连接数。设置字段TCPKEEPALIVE值为TRUE。
方法二:打开SDE的安装目录下的(一般安装路径为C:\arcgis \ArcSDE\sqlexe\etc)giomgr.defs文件进行编辑,设置CONNECTIONS参数为你的最大连接数。然后设置 TCPKEEPALIVE参数为TRUE。 通过命令导入到数据库中:sdeconfig –o import –f C:\arcgis\ArcSDE\sqlexe\etc\giomgr.defs –i esri_sde(数据库实例名) –s (ServerName) –u sde(用户名) –p sde(密码) 。 设置好后需要重启SDE服务才能生效。
TCPKEEPALIVE 参数是做什么用的呢?能够删除无效连接的最大功臣就是他了。当TCPKEEPALIVE参数设置为TRUE后,数据库会根据SDE服务所在机器的注册表项 KEEPALIVETIME所提供的响应时间, 不断侦测所有连接是否为无效连接,如果为无效连接,则自动删除该连接。对默认安装操作系统的机器而KEEPALIVETIME注册表项是没有的。 如果没有话,服务器不会主动发送 KeepAlive 数据包来确认空闲连接是否依然毫无变化。也就不会进行删除操作。所以上面提到的无效连接会越来越多。可以在如下路径中:Local_Machine\system\CurrentControlSet \Services\Tcpip\Parameters 添加DWORD项:KeepAliveTime。如果不设置值的话默认为两小时。具体时间可以看情况而定。一般推荐为5分钟。然后重启机器(一定要重启,注册表的新加项才生效)。世界从此清静了,以后超出最大连接数的错误再也不会烦扰你的头皮。
第二,如果实际情接数的限制,我们如何修改?
在Windows 操作系统上,ArcSDE 服务作为一个“非交互式桌面程序”运行,而windows的一个称作SharedSection的初始化参数限定了为“非交互式桌面程序”分配的最大堆栈内存,我们可以通过windows注册表修改该值。
点击“开始”->“运行”->”regedit”,打开注册表:找到以下路径:
[url=file://\\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session]\\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session[/url] Manager\ SubSystems\Windows
这个字符串示例如下:
%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16
这个字符串包含了windows的初始化参数。在该字符串中,我们可以找到SharedSection参数,默认值是1024,3072,512。第三个值(512Kb)就是为“非交互式桌面程序”分配的最大堆栈内存。在这个数值(512Kb)下,ArcSDE能够接受的最大连接数大约为56个。增加该数值到2M就能够使ArcSDE支持的最大连接数达到270个。即此时的设置为:1024,3072,2048
对于Windows来说,所有的堆栈内存(非交互式桌面和交互式桌面)总和是48Mb,因此,我们在调整SharedSection参数的时候需要仔细。
官方默认的sde最大连接数为48个,在实际应用中一旦超出这个最大连接数,就无法进行连接sde了,提示:“Failed to connect to database. Maximum number of conections to instance exceeded”。 我在实际工作 中经常会遇到这种情况,每次解决的办法就是重启服务。
在$SDEHOME/etc目录下giomgr.defs文件中,CONNECTIONS连接数修改成128;或者使用命令sdeconfig -o alter -v connections=128 -u sde -p sde
毕竟老是重启服务不是个长久之计, 我在网上也找了一些解决的方法,最简单的方法就是修改这个连接参数为更大的数。但是由于系统默认的就是48个,后来又看到一篇文章 ,专门讲到为什么windows操作系统中sde服务的最大连接数为48个,原来是Windows为每个服务分配了一个固定大小的内存(默认512K)。每个sde进程大约需要9K内存,因此sde默认的连接数为512/9约等于48。可以修改这个内存数,将512k改为1024,如果连接数超过250,可以改成2048。需要修改注册表:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Windows 项目中的SharedSection,并将原SharedSection=1024,3072,512中的第三项改为1024或2048等数即可修改系统的默认最大连接数”。但是效果如何?我还没有试,会不会出现不稳定的情况,毕竟连接数越多,并发性操作也就越不稳定。
如果在不修改这个参数的情况下,让SDE自动检测并断开一定时间未进行操作的SDE连接,那才是最好解决方法的方法。我看到论坛上有通过 “TCPKEEPALIVE”参数设置为True来解决的,并在注册表中Local_Machine\system\CurrentControlSet \Services\Tcpip\Parameters 添加DWORD项:KeepAliveTime。
keepalivetime时间值是:SDE服务器giomgr进程在没有收到客户端的反应的最大阀值,如果超出该值,那么客户端进程和与其关联信息将被清除。它是在SDE服务器机器上的。
KeepAliveTime默认值是7200000ms( 2 hours),单位是毫秒。
KeepAliveTime本人并没有尝试使用,只是修改了连接数和注册表信息。
相关推荐
### ArcSDE连接数设置及其性能说明 #### 一、引言 在地理信息系统(GIS)领域中,ArcSDE作为一款重要的空间数据库管理系统,被广泛应用于存储和管理空间数据。随着多用户并发操作的需求日益增加,ArcSDE连接数的...
#### 二、arcsde连接数调整背景 在实际使用过程中,可能会遇到由于连接数不足导致的服务不可用问题。此时,就需要通过调整ArcSDE配置来增加最大连接数,以确保系统稳定运行。 #### 三、调整连接数的操作步骤 根据...
- **编辑giomgr.defs文件**:在SDE安装目录下的`giomgr.defs`文件中,修改`CONNECTIONS`参数以指定最大连接数,并将`TCPKEEPALIVE`参数设置为`TRUE`。之后,使用`sdeconfig`命令将配置导入到数据库中。 #### 五、...
"Arc SDE连接数超限处理方式" 在 ArcGIS 中,SDE(Spatial Database Engine)是用于管理和存储空间数据的核心组件。然而,在实际应用中,SDE 连接数超限的问题经常会出现,这将导致系统性能下降,甚至崩溃。因此,...
- **服务配置**:通过特定命令对服务进行配置,如设置最大并发连接数等。 - **服务监控**:定期检查服务状态,及时发现并解决问题。 - **服务日志**:查看服务的日志文件,分析运行状况。 #### 八、总结 ArcSDE命令...
默认情况下,ArcSDE允许的最大并发连接数为48个。如果需要增加或减少这个数值,可以使用`sdeconfig`命令进行修改,例如:`sdeconfig -o alter -u sde -p pwd -N -q -v CONNECTIONS=<连接数>`。在上述命令中,`<连接...
- **dbms_type**:标识ArcSDE连接的数据库类型,如Oracle、SQL Server等。 - **server_name**:ArcSDE服务的主机名或IP地址。 - **port**:ArcSDE服务监听的端口号,用于客户端连接。 - **max_connections**:...
修改注册表中“HKEY_LOCAL_MACHINE\SOFTWARE\ESRI\ArcInfo\ArcSDE\ArcSDE forOracle\esri_xxx”的“SDEHOME”值为“~\ArcGIS\ArcSDE\oraxxx”,确保系统能够正确识别新创建的ArcSDE实例的配置路径。 ##### 7. 恢复...
- **服务实例优化**:调整ArcSDE服务实例的配置,如并发连接数限制、缓存设置等。 - **网络优化**:确保网络连接稳定可靠,减少延迟。 #### 七、总结 通过以上步骤,我们不仅完成了ArcSDE的基本安装,还深入了解了...
- **MAX_CONNECTIONS**:设置 ArcSDE 数据库的最大并发连接数。 - 根据系统的实际情况进行调整,过高或过低都会影响性能。 - **BUFFER_SIZE**:定义缓存区大小,影响数据读取速度。 - 对于大型数据库,适当增加...
### ArcSDE 空间数据库系统表结构详解 #### 概述 ArcSDE是Esri开发的一款用于管理地理空间数据的企业级解决方案。通过ArcSDE,用户可以在关系型数据库管理系统(RDBMS)中存储、管理和访问地理空间数据。为了实现这一...
2. 连接ArcSDE:使用ArcGIS Desktop或ArcGIS Pro等软件,创建连接到ArcSDE数据库,确保有相应的权限进行数据操作。 3. 创建数据结构:在ArcSDE中定义合适的图层和表结构,用于存储DOM数据的元数据和实际影像。 4. ...
- 调整数据库配置:根据实际需求调整最大内存、连接数等参数。 **4. ArcSDE连接问题解决** - 检查ArcSDE服务是否正常启动。 - 确认数据库服务器地址和端口号正确无误。 - 检查客户端的ArcGIS版本是否与服务器...
3. **服务调优**:根据实际需求调整服务参数,比如缓存策略、服务的最大并发连接数等。 4. **数据管理**:优化数据存储结构和索引,减少查询时间。定期备份数据并清理不必要的历史记录,减轻 Data Server 的负担。...
- **服务器GIS**:包括ArcGIS Server、ArcIMS和ArcSDE,用于创建和管理大规模的GIS应用,支持企业级和互联网环境下的地理信息共享与服务。 - **移动GIS**:通过ArcPad等移动设备应用,支持野外数据采集和信息访问,...
- **操作与管理**:学习如何在ArcGIS Engine中连接、查询和管理空间数据库。 #### 五、几何对象和空间参考 - **几何对象类型**:点(Point)、线(Linear)、面(Polygon)等。 - **空间参考系统**:地理坐标系统(GCS)和...