Failed to connect to database. Maximum number of conections to instance exceeded
我们大体都知道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的更多相关文章
- The maximum number of cell styles was exceeded. You can define up to 4000 styles
POI操作Excel中,导出的数据不是很大时,则不会有问题,而数据很多或者比较多时, 就会报以下的错误,是由于cell styles太多create造成,故一般可以把cellstyle设置放到循环外面 ...
- 【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 ...
- 解决;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);
- 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 ...
- 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 ...
- 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 ...
- greenplum全量恢复gprecoverseg -F出现Unable to connect to database时的相关分析及解决方法
之前有两位朋友碰到过在对greenplum的系统构架更改后,出现全量恢复gprecoverseg -F也无法正常执行的情况. 报错信息为Unable to connect to database. R ...
- 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 ...
- 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 ...
随机推荐
- Tridiv:基于 Web 的 CSS 编辑器,创建炫丽 3D 图形
Tridiv 是一个基于 Web 的编辑器,使用 CSS 创建 3D 形状.它提供了一个传统的四个面板的操作界面,给出了从每个平面的视图,以及一个预览窗格中示出的最终的效果.使用 Tridiv 可以创 ...
- 写在MongoCola在Github上获得200个Star之后
MongoCola MongoCola是一个开源的MongoDB管理工具. 由于最初版本的设计失误,所以现在只能在Windows上使用,虽然可以在OSX上使用,但是非常别扭. 契机 MongoCola ...
- Android:StatFs类 获取系统/sdcard存储空间信息
在存储文件时,为了保证有充足的存储空间大小,通常需要知道系统内部或者sdcard的剩余存储空间大小,这里就需要用到StatFs类. 1. 判断 SDCard 是否存在,并且是否具有可读写权限 /** ...
- Linux安装配置tomcat
1.首先配置好jdk 查看java版本:java -verson 1.官网下载jdk 2.tar -zxvf xxxx.tar.gz 解压 3.配置环境变量 <1># vi /etc/ ...
- Swift泛型Protocol对比C#泛型Interface
本篇纯属抬杠之作,之前我们提到了Swift的泛型Protocol使用associatedtype关键字,而不是使用<Type>语法的泛型参数.这其中有什么好处呢? 我就这个问题搜索了一些回 ...
- 关于HttpHandler的相关知识总结
一.关于IHttpHandler.IsReusable 很多人不明白,这哥们到底干嘛的,估计是微软最初的一个想法--让一个对象可以一直不断地被重复使用 ,但这个想法不成熟,会带来很多隐藏问题,一个对象 ...
- 【转载】8天学通MongoDB——第四天 索引操作
这些天项目改版,时间比较紧,博客也就没跟得上,还望大家见谅. 好,今天分享下mongodb中关于索引的基本操作,我们日常做开发都避免不了要对程序进行性能优化,而程序的操作无非就是CURD,通常我们 又 ...
- js 比较好的博客
1.0 作者:cloudgamer http://www.cnblogs.com/cloudgamer/archive/2010/04/01/ImageZoom.html
- Winform开发框架之参数配置管理功能实现-基于SettingsProvider.net的构建
在较早时期,我写过一篇文章<结合Control.FirefoxDialog控件,构造优秀的参数配置管理模块>,介绍过在我的Winform框架基础上集成的参数配置模块功能,但是参数模块的配置 ...
- PHP条件语句语法与示例
一.if…else语句 语法: 1 if(条件){ …… } else{ …… } 2 if(条件){ …… } elseif(条件){ …… } else{ …… } 示例1: <?php & ...