2014-04-01 87 views
0

我在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" /> 

有什麼想法可能會誤入歧途?

+0

獲取大小可能?不知道,但也許亞馬遜有一些超時設置爲您的查詢(彈性=沒有可能需要太長時間) - 請參閱http://docs.aws.amazon.com/redshift/latest/dg/jdbc-fetch-size-parameter.html – Leo

+0

是的,我試着用1000; 10,000;和40,000 fetchSize,無效:( – adv

+0

客戶端大小的內存不足錯誤是我需要調查,因爲我目前正在使用一個微EC2實例 – adv

回答

0

這根本不是數據庫問題......我在while(rs.next())循環中添加了一個計數器,並且每次都以40,000結束,而servlet row nums與之前不同。

我設法從谷歌地圖製作工具番石榴()ConcurrentMap到Java的ConcurrentHashMap切換爲解決這個問題,但現在我不得不面對再次在Java HashMap的GC內存問題...