我们大体都知道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命令后加上?就可以查看该命令的所有参数信息)。在为用户设置最

var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);

大连接数的时候,需要预估一下在同一时间最多可能会有多少个连接进程。在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数据包来确认空闲连接是否依然毫无变化。也就不会进行删除操作。所以上面提到的无效连接会越来越多。可以在如下路径中:

var cpro_psid ="u2572954"; var cpro_pswidth =966; var cpro_psheight =120;

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的最大连接数的更多相关文章

  1. Windows Server 2003修改远程桌面最大连接数的方法

    Windows Server 2003远程桌面允许的终端连接数默认情况下只有2个线程,也就是2个用户,当我们需要多人同时登录服务器的时候,就需要适当增加远程连接同时在线的用户数. 修改远程桌面最大连接 ...

  2. 修改Apache的最大连接数

    Apache的最大连接数,默认为256个. 修改apache的最大连接数,方法如下: 一:先修改./apache/conf/httpd.conf文件. # vi httpd.conf 将“#Inclu ...

  3. win2008修改最大远程桌面连接数

    win2008修改最大远程桌面连接数 运行——gredit.msc——管理模板——windows组件——远程桌面服务——远程桌面回话主机——连接——限制连接的数量——修改为999999

  4. 修改MySQL默认最大连接数

    修改MySQL默认最大连接数 MYSQL数据库安装完成后,默认最大连接数是100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,增加默认MYSQL连接数的方法有两个: 方法一: 进入MYSQL ...

  5. [转]怎么查看和修改 MySQL 的最大连接数?

    使用 MySQL 数据库的站点,当访问连接数过多时,就会出现 "Too many connections" 的错误.出现这种错误有两种情况,一种是网站访问量实在太大,服务器已经负担 ...

  6. windows下MySQL5.6以上版本,如何通过修改配置文件来修改数据库的最大连接数啊?

    并没有my.ini文件,只有一个my-default.ini文件,并且里面并没有max_connections windows下MySQL5.6以上版本,如何通过修改配置文件来修改数据库的最大连接数啊 ...

  7. 修改linux系统TCP连接数

    修改linux系统TCP连接数 centOS 6.x (1)vi /etc/sysctl.conf (2)添加参数 net.nf_conntrack_max = 655360 (3)sysctl -p ...

  8. no appropriate service handler found,修改数据库的最大连接数,默认150

    no appropriate service handler found,频繁进行数据操作的时候,会出现这种错误.例如,当我读取excel时,一次读取好多数据,这个时候需要修改数据库的最大连接数 se ...

  9. 怎么查看和修改 MySQL 的最大连接数?

    一. 查看Mysql当前配置 MySQL 默认的最大连接数为 100,可以在 mysql 客户端使用以下命令查看 mysql> show variables like '%connections ...

随机推荐

  1. OpenWebGlobe-开源三维GIS初体验(附源码和演示)

    1.OpenWebGlobe简介 OpenWebGlobe是一个高性能的三维引擎.可应用于可视化仿真,游戏,三维GIS,虚拟现实等领域.它使用纯javascript编写,可以运行在任何支持HTML5. ...

  2. C#设计模式系列:开闭原则(Open Close Principle)

    1.开闭原则简介 开闭原则对扩展开放,对修改关闭,开闭原则是面向对象设计中可复用设计的基石. 2.开闭原则的实现 实现开闭原则的关键就在于抽象,把系统的所有可能的行为抽象成一个抽象底层,这个抽象底层规 ...

  3. ASP.NET MVC5 网站开发实践(二) Member区域 - 添加文章

    上次把架构做好了,这次做添加文章.添加文章涉及附件的上传管理及富文本编辑器的使用,早添加文章时一并实现. 要点: 富文本编辑器采用KindEditor.功能很强大,国人开发,LGPL开源,自己人的好东 ...

  4. php常用函数

    1.随机数和时间 echo rand();  //随机数生成器echo rand(0,10); //生成某个范围内的随机数 <!DOCTYPE html PUBLIC "-//W3C/ ...

  5. ASP.NET Core的配置(3): 将配置绑定为对象[下篇]

    我们在<读取配置信息>通过实例的形式演示了如何利用Options模型以依赖注入的方式直接获取由指定配置节绑定生成的Options对象,我们再次回顾一下当初我们编写的程序.如下面的代码片段所 ...

  6. iOS homekit使用说明

    本文由CocoaChina翻译组成员iBenjamin_Go和浅夏@旧时光翻译自苹果开发文档:HomeKit Developer Guide,敬请勘误. 本文档内容包括 第一部分:简介 第二部分:启用 ...

  7. SQLite关系型数据库

    SQLiteOpenHelper的使用:       首先声明一个DatabaseHelper类,这个类继承于SQLiteOpenHelper类,首先得有构造函数,声明DatabaseHelper类如 ...

  8. Lucene.net初探

    引言 在分析同事开发的客户端搜索项目时注意到,搜索的关键是索引,而提到索引就不得不提Lucene.net,思路就是将需要搜索内容写入索引,客户端自己或局域网其他机器搜索时直接搜索索引,从而查看到你共享 ...

  9. Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)

    Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码) http://blog.csdn.net/helonsy/article/details/7207497 ...

  10. VMware Workstation 10.0 正式版官方简体中文下载(附序列号)

    虚拟机界数一数二的王者软件VMWare Workstation 今日推出了最新的VMware Workstation 10.0 版本.该版本最大的更新是加入了简体中文语言,这意味着未来神马汉化包.中文 ...