我们大体都知道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本人并没有尝试使用,只是修改了连接数和注册表信息。

Failed to connect to database. Maximum number of conections to instance exceeded的更多相关文章

  1. The maximum number of cell styles was exceeded. You can define up to 4000 styles

    POI操作Excel中,导出的数据不是很大时,则不会有问题,而数据很多或者比较多时, 就会报以下的错误,是由于cell styles太多create造成,故一般可以把cellstyle设置放到循环外面 ...

  2. 【POI】导出xls文件报错:The maximum number of cell styles was exceeded. You can define up to 4000 styles in a .xls workbook

    使用POI导出xls文件,由于数据过多,导致导出xls报错如下: The maximum number of cell styles was exceeded. You can define up t ...

  3. 解决;R语言使用sqldf库是报错"Failed to connect to database: Error: Access denied for user '..'@'localhost' (using password: NO) Error in !dbPreExists : invalid argument type"

    原因:在使用sqldf时,不需要加载RMySQL库 解决方案:在控制台执行释放RMySQL库加载 detach("package:RMySQL", unload=T);

  4. ArcMap 连接SDE 出错“Failed to connect to the specified server. Entry for SDE instance no found in services file.”

    问题描述 环境: ARCMAP 10.0 ARCSDE FOR ORACLE 10.0   在通过用ArcMap 连接ORACLE SDE时出现上面的错.   解决方式 在 C:\Windows\Sy ...

  5. iOS真机调试问题-App installation failed,The maximum number of apps for free development profiles has been reached.

    The maximum number of apps for free development profiles has been reached. 源引:http://www.jianshu.com ...

  6. The maximum number of processes for the user account running is currently , which can cause performance issues. We recommend increasing this to at least 4096.

    [root@localhost ~]# vi /etc/security/limits.conf # /etc/security/limits.conf # #Each line describes ...

  7. greenplum全量恢复gprecoverseg -F出现Unable to connect to database时的相关分析及解决方法

    之前有两位朋友碰到过在对greenplum的系统构架更改后,出现全量恢复gprecoverseg -F也无法正常执行的情况. 报错信息为Unable to connect to database. R ...

  8. Selenium2学习-007-WebUI自动化实战实例-005-解决 Firefox 版本不兼容:org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary

    此文主要讲述 Java 运行 Selenium 脚本时,因 Friefox 浏览器版本与 selenium-server-standalone-x.xx.x.jar 不兼容引起的 org.openqa ...

  9. Linux Increase The Maximum Number Of Open Files / File Descriptors (FD)

    How do I increase the maximum number of open files under CentOS Linux? How do I open more file descr ...

随机推荐

  1. Tridiv:基于 Web 的 CSS 编辑器,创建炫丽 3D 图形

    Tridiv 是一个基于 Web 的编辑器,使用 CSS 创建 3D 形状.它提供了一个传统的四个面板的操作界面,给出了从每个平面的视图,以及一个预览窗格中示出的最终的效果.使用 Tridiv 可以创 ...

  2. 写在MongoCola在Github上获得200个Star之后

    MongoCola MongoCola是一个开源的MongoDB管理工具. 由于最初版本的设计失误,所以现在只能在Windows上使用,虽然可以在OSX上使用,但是非常别扭. 契机 MongoCola ...

  3. Android:StatFs类 获取系统/sdcard存储空间信息

    在存储文件时,为了保证有充足的存储空间大小,通常需要知道系统内部或者sdcard的剩余存储空间大小,这里就需要用到StatFs类. 1. 判断 SDCard 是否存在,并且是否具有可读写权限 /** ...

  4. Linux安装配置tomcat

    1.首先配置好jdk 查看java版本:java -verson 1.官网下载jdk 2.tar -zxvf xxxx.tar.gz   解压 3.配置环境变量 <1># vi /etc/ ...

  5. Swift泛型Protocol对比C#泛型Interface

    本篇纯属抬杠之作,之前我们提到了Swift的泛型Protocol使用associatedtype关键字,而不是使用<Type>语法的泛型参数.这其中有什么好处呢? 我就这个问题搜索了一些回 ...

  6. 关于HttpHandler的相关知识总结

    一.关于IHttpHandler.IsReusable 很多人不明白,这哥们到底干嘛的,估计是微软最初的一个想法--让一个对象可以一直不断地被重复使用 ,但这个想法不成熟,会带来很多隐藏问题,一个对象 ...

  7. 【转载】8天学通MongoDB——第四天 索引操作

    这些天项目改版,时间比较紧,博客也就没跟得上,还望大家见谅. 好,今天分享下mongodb中关于索引的基本操作,我们日常做开发都避免不了要对程序进行性能优化,而程序的操作无非就是CURD,通常我们 又 ...

  8. js 比较好的博客

    1.0 作者:cloudgamer http://www.cnblogs.com/cloudgamer/archive/2010/04/01/ImageZoom.html

  9. Winform开发框架之参数配置管理功能实现-基于SettingsProvider.net的构建

    在较早时期,我写过一篇文章<结合Control.FirefoxDialog控件,构造优秀的参数配置管理模块>,介绍过在我的Winform框架基础上集成的参数配置模块功能,但是参数模块的配置 ...

  10. PHP条件语句语法与示例

    一.if…else语句 语法: 1 if(条件){ …… } else{ …… } 2 if(条件){ …… } elseif(条件){ …… } else{ …… } 示例1: <?php & ...