Amazon EC2上的不完整结果集
问题描述:
我在Amazon Web Services EC2上托管的Tomcat上运行JNDI JDBC连接池,该服务与Amazon Web Services PostgreSQL关系数据库进行交谈。Amazon EC2上的不完整结果集
我有一个包含40,000行数据的表,我尝试使用JDBC PreparedStatement“SELECT * FROM tableName”一次性收集数据。
的东西,这个组合完美的作品,收集所有40000行,当我在我的本地机器上运行的servlet(从我本地的Tomcat),并把它通过分贝-name.aws-RDS-URL交谈的RDS :5432,但是,当我在AWS EC2上运行相同的servlet并指示它与本地vLAN上的RDS通信时,它永远不会超过30,000行,结果集只有2000行。每次刷新它时,它都会产生一个新的但不完整的行数。
下面是我在Tomcat的全局context.xml中的条目(我在多个servlet中使用相同的数据源)。
< Resource
name="jdbc/postgres4"
auth="Container"
type="javax.sql.DataSource"
maxActive="8"
maxIdle="8"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://dn-name.aws-rds-URL:5432/SID"
username="db-username"
password="password" />
有什么想法可能会误入歧途?
答
这根本不是数据库问题......我在while(rs.next())循环中添加了一个计数器,并且每次都以40,000结束,而servlet row nums与之前不同。
我设法从谷歌地图制作工具番石榴()ConcurrentMap到Java的ConcurrentHashMap切换为解决这个问题,但现在我不得不面对再次在Java HashMap的GC内存问题...
获取大小可能?不知道,但也许亚马逊有一些超时设置为您的查询(弹性=没有可能需要太长时间) - 请参阅http://docs.aws.amazon.com/redshift/latest/dg/jdbc-fetch-size-parameter.html – Leo
是的,我试着用1000; 10,000;和40,000 fetchSize,无效:( – adv
客户端大小的内存不足错误是我需要调查,因为我目前正在使用一个微EC2实例 – adv