SDE直连、修改SDE最大连接数、自动踢除SDE死连接

SDE直连
通过SDE服务来连接Oracle数据库,SDE服务存在很多不稳定的地方。当连接SDE的用户数多了的时候经常出现故障。为了避免这种情况,SDE提供了直连Oracle的方式,即通过Oracle的连接方式来连接。 

直连的优点:
 
1) 不管理ArcSDE服务
     直连数据库驱动不需要管理ArcSDE服务,不需要安装、配置和启动中间进程giomgr.exe。
2) 为可伸缩的系统提供更多的选择
     直连架构将ArcSDE组件的功能迁移到桌面执行,移除了服务器端的ArcSDE负载,释放更多的资源可供DBMS使用,为数据库服务器提供了更好的可伸缩性。
 3) 直连速度更快
     直连在客户机上执行处理,比服务器端处理更快。与客户机上执行处理相比,服务器端执行要同时处理来自许多客户机的请求,然后把计算结果需通过网络传送到客户机。

直连的前提条件:
如果是Oracle,客户端对服务器数据库的直连,必须要安装Oracle的客户端程序并且配置好。装oracle客户端,然后在Net Manager下面配置一下连接。

直连的参数配置:
Oracle:设置service、username、password三项即可
service:sde@oracle10g(或oracle9i)
username:username(比如:sde)
password:password@oracle客户端连接服务名(比如:sde@localhost:1521/orcl )

SQLServer:设置Service、Database、username、password即可,
service:sde:sqlserver:IP(比如:sde:sqlserver:127.0.0.1)
database:sde数据库名(比如:sde)
username:username(比如:sde)
password:password(比如:sde)

修改SDE最大连接数

一、设置CONNECTIONS参数
设置CONNECTIONS参数为你的最大连接数。默认为48,可以修改为200
二、修改SharedSection参数值
在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死连接
一、设置TCPKEEPALIVE参数为TRUE
方法一:用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服务才能生效。

二、设置KeepAliveTime参数值
在 Microsoft Windows 设置 KeepAliveTime 为 300000. 
\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TCPIP\Parameters\KeepAliveTime
If the如果这个注册表键值不存在,则要自己创建这个值. 
同进这个时间指的是毫秒.

其中当线程资料超过corePoolSize的值时,则线程时间超过KeepAliveTime的则自动断开,KeepAliveTime=300000。

当TCPKEEPALIVE参数设置为TRUE后,数据库会根据SDE服务所在机器的注册表项KEEPALIVETIME所提供的响应时间, 不断侦测所有连接是否为无效连接,如果为无效连接,则自动删除该连接。 对默认安装操作系统的机器而言KEEPALIVETIME注册表项是没有的。 如果没有话,服务器不会主动发送 KeepAlive 数据包来确认空闲连接是否依然毫无变化。也就不会进行删除操作。 所以上面提到的无效连接会越来越多。可以在如下路径中:Local_Machine\system\CurrentControlSet\Services\Tcpip\Parameters
添加DWORD项:KeepAliveTime。 如果不设置值的话默认为两小时。具体时间可以看情况而定。一般推荐为5分钟。然后重启机器(一定要重启,注册表的新加项才生效)。世界从此清静了, 以后超出最大连接数的错误再也不会烦扰你的头皮。

转载自:https://blog.csdn.net/kone0611/article/details/79049673

You may also like...

退出移动版