# apaches dbcp und threads



## threadman (8. Jul 2008)

ich habe mal testen wollen, wie gut das mit dem pool so funktioniert und habe dabei festgestellt, dass bei sehr vielen thread (ab 50), die alle ne ganze reihe von aktionen ausführen, es zu problemen kommt
und zwar wird gemeldet:

org.postgresql.util.PSQLException: FATAL: sorry, too many clients already
und
java.sql.SQLException: Connection is closed.

die funktion, die die verbindungen verteilt hat ein synchronized, so dass ich nicht verstehe, wie es da 
zu problemen mit schon geschlossenen verbindungen kommen kann


```
public static synchronized Connection createConnection() {
		   
		try {
						
			con =  pds.getConnection();
			
		} catch (SQLException e) {
			
			e.printStackTrace();
		}
		catch (Exception e) {
			
			e.printStackTrace();
		}
		return con;
	  }
```


```
meine einstellungen
connector.getGenObjectPool().setMaxActive(30);
		connector.getGenObjectPool().setMaxIdle(10);
		connector.getGenObjectPool().setMinIdle(9);
		connector.getGenObjectPool().setMaxWait(-1);
```

im mom habe ich 2 möglichkeiten ohne fehler da druch zu kommen
1. sleep zwischen dem ausführen der transaktionen
 ich vermute, dadurch verringert sich die wahrscheinlichkeit, dass 2 threads eine connection haben, was aber nicht sein darf, wegen dem synchronized

aber mal ehrlich, wenn ich nicht nen paar threads nutzen darf, wozu dann überhaupt nen pool?
2. setMaxActive auf unter 20 setzen, dann kommt es auch nie zu problemen


----------



## maki (8. Jul 2008)

Die Fehlermeldung ist von der DB.

Wieviele Connections erlaubt dir postgreSQL laut Konfiguration?
Könnte es sein dass weniger als 30 zugelassen sind?


----------



## threadman (8. Jul 2008)

maki hat gesagt.:
			
		

> Die Fehlermeldung ist von der DB.
> 
> Wieviele Connections erlaubt dir postgreSQL laut Konfiguration?
> Könnte es sein dass weniger als 30 zugelassen sind?



max_connections = 100	# (change requires restart)

das sollte also nicht das problem sein


----------

