2016-11-23 84 views
0

我正在使用postgresql,但在從數據庫中的表中獲取記錄時,我已經收到此異常FATAL: sorry, too many clientsPostgres + JDBC模板太多客戶端已經例外

休耕是連接類:

<context:component-scan base-package="com.trinity" /> 
     <context:property-placeholder location="classpath:/jdbc.properties" order="1" ignore-unresolvable="true"/> 
     <beans:bean id="dataSourcePOSTGRESQL" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <beans:property name="driverClassName" value="${pg_jdbc.driverClassName}" /> 
     <beans:property name="url" value="${pg_jdbc.url}" /> 
     <beans:property name="username" value="${pg_jdbc.username}" /> 
     <beans:property name="password" value="${pg_jdbc.password}" /> 
    </beans:bean> 

jdbc.propertis

pg_jdbc.driverClassName=org.postgresql.Driver 
pg_jdbc1.url1=jdbc:postgresql://localhost:5433/iotdb 
pg_jdbc.username=postgres 
[email protected] 

DAO類:

public List<Map<String, Object>> getAllDevicesNames(Integer companyId) { 

    String sql = "select device_configuration_id,device_name,device_id from iot.device_configuration where company_id = ? "; 
    List<Map<String, Object>> queryForList = jdbcTemplate.queryForList(sql,new Object[]{companyId}); 
    return queryForList; 

} 
+1

您使用的是連接池嗎?你知道你有多少個開放的連接嗎? – chrylis

+1

最有可能的是,你沒有關閉你的連接,但沒有看到你的連接代碼(s),我們不能肯定地說。 –

+0

(注意,如果你使用Spring Boot,你可以跳過配置,它甚至會自動爲你配置連接池和JDBC模板。) – chrylis

回答

-1

使用此查詢來查找連接數

SELECT sum(numbackends) FROM pg_stat_database; 

標準100最大數據庫連接服務器可能與數據庫服務器可能不夠用於生產使用。爲了增加在Linux安裝此Postgres的默認情況下,您可以按照下列步驟操作:

/var/lib/pgsql/data/postgresql.conf 

,你會發現這兩個設置 在100,分別爲24 MB。您可以將其更改爲以下:

max_connections = 300 
shared_buffers = 80MB 
+1

如果他在開發環境中有很多連接,那麼他幾乎肯定會將它們泄漏到某個地方。 – chrylis

1

以前在我postgres.cfg文件

max_connections = 100 
shared_buffers = 128kb 

現在,我改爲

max_connections = 300 
shared_buffers = 80MB 

這是工作的罰款。

+0

如果它按照預期的方式工作,請接受答案:) – Srinivasu