Dit flertrådede program åbner for mange forbindelser/sessioner. Derfor stopper lytteren og blokerer nye forbindelser i et stykke tid.
Tjek først dit DB-ressourceforbrug:
SELECT * FROM v$resource_limit WHERE resource_name IN ('processes','sessions');
Tjek, om din MAX_UTILIZATION for enten dine processer eller sessioner er ved at komme for tæt på LIMIT_VALUE. Hvis ja, skal du enten:
- Brug DB Connection-pooling til at dele
Connection
genstande mellem tråde. Eller, - Øg antallet af processer/sessioner, som Oracle kan betjene samtidigt.
Faktisk bør Connection Pooling (#1) altid udføres. En applikation kan ikke skalere op på anden måde. Tjek Apache Commons DBCP for detaljer. For #2 skal du åbne en ny SQL*Plus-session som SYSTEM og køre:
ALTER system SET processes=<n-as-per-number-of-threads> scope=spfile;
for at øge backend samtidighed. GENSTART derefter databasen. VIGTIGT!