互联网服务

应用批量提交报错,是怎么回事

后台应用程序批量提交4万多的数据时,报如下:com.ibm.db2.jcc.a.um: [jcc][t4][2045][11187][3.51.90] 超过了最大链接请求数 0x7FFF。 ERRORCODE=-4499, SQLSTATE=null

请问有人知道是怎么回事吗?

环境为DB2/AIX64 9.1.7
后台应用程序为JAVA写的通过JDBC连接数据库进行批量提交的应用
参与8

6同行回答

ljbupcljbupc软件开发工程师上海安硕科技
用java 的preparestatement,单次提交的量不是越大越好,不建议过大;看sql的复杂程度2000~10000就可以了;比较复杂的2000~5000,简单的可以多点;批量提交的意义在于提高网络的效率;量大了,应用端占用java虚拟机的内存会很大,会消耗过多资源;数据库去解析这批对象也是需要资源的。你...显示全部
用java 的preparestatement,单次提交的量不是越大越好,不建议过大;
看sql的复杂程度2000~10000就可以了;比较复杂的2000~5000,简单的可以多点;
批量提交的意义在于提高网络的效率;
量大了,应用端占用java虚拟机的内存会很大,会消耗过多资源;
数据库去解析这批对象也是需要资源的。
你可以去看看数据库的DB2DIAG,可能会有内存的变动(如果是自动调节);
一批sql执行也需要一定的时间,然后才提交,提交了连接才会接受下一批数据。

我猜想可能是这样的:
4W的量还是不小,写日志会不少,数据读写也不会少,执行sql时间不短,下一批sql发到数据库的时候还没有执行完,就会等待;等待达到某个时间,然后就抛出这个错了。
4W和1W的执行时间差距能达到这个程度,极有可能是缓冲池不够,你可以增大缓冲池试试。不过还是不建议用那么大的提交量,而且越大不一定越快。收起
互联网服务 · 2012-10-16
浏览1280
humanboyhumanboy软件开发工程师123
问题已经解决,感谢l 4楼jbupc的关注,从解决的方式方法看4楼描述的是正确的,调小了提交量,就不会报错了。显示全部
问题已经解决,感谢l 4楼jbupc的关注,从解决的方式方法看4楼描述的是正确的,调小了提交量,就不会报错了。收起
互联网服务 · 2012-10-17
浏览1206
freebilefreebile数据库运维工程师金融行业
超过了最大链接请求数 0x7FFF,看看连接数;楼上兄弟说的非常有道理显示全部
超过了最大链接请求数 0x7FFF,看看连接数;楼上兄弟说的非常有道理收起
金融其它 · 2012-10-17
浏览1210
leo_wynleo_wyn商业智能工程师Security
检查java程序, session是否关闭, 应该是连接数太多, 导致不能在分配连接数显示全部
检查java程序, session是否关闭, 应该是连接数太多, 导致不能在分配连接数收起
系统集成 · 2012-10-16
浏览1182
humanboyhumanboy软件开发工程师123
回复 2# wencycool 可以排除数据库是否启动,看端口号是否正确,数据库名称是否正确这些。数据库一直在用,并测试可以连接,端口和数据库名称可以确定为正确的。批量提交的时候,提交10000的量,就不会报这个错误,提交4w的量就报错了。...显示全部
回复 2# wencycool

可以排除数据库是否启动,看端口号是否正确,数据库名称是否正确这些。数据库一直在用,并测试可以连接,端口和数据库名称可以确定为正确的。


批量提交的时候,提交10000的量,就不会报这个错误,提交4w的量就报错了。收起
互联网服务 · 2012-10-16
浏览1201
wencycoolwencycool数据库管理员山东
查看一下,数据库是否启动,看端口号是否正确,数据库名称是否正确。官方给的解释:-4499        text-from-getMessageExplanation: A fatal error occurred that resulted in a disconnect from the data source. The existing connection has become unus...显示全部
查看一下,数据库是否启动,看端口号是否正确,数据库名称是否正确。
官方给的解释:
-4499        text-from-getMessage
Explanation: A fatal error occurred that resulted in a disconnect from the data source. The existing connection has become unusable.

User response: Call SQLException.getMessage to retrieve specific information about the problem.收起
互联网服务 · 2012-10-16
浏览1249

提问者

humanboy
软件开发工程师123

问题状态

  • 发布时间:2012-10-16
  • 关注会员:1 人
  • 问题浏览:4907
  • 最近回答:2012-10-17
  • X社区推广