Twoja aplikacja wielowątkowa otwiera zbyt wiele połączeń/sesji. W związku z tym słuchacz przerywa i blokuje nowe połączenia na chwilę.
Najpierw sprawdź wykorzystanie zasobów bazy danych:
SELECT * FROM v$resource_limit WHERE resource_name IN ('processes','sessions');
Sprawdź, czy MAX_UTILIZATION dla Twoich procesów lub sesji zbliża się do LIMIT_VALUE. Jeśli tak, powinieneś:
- Użyj puli połączeń DB, aby udostępnić
Connection
obiekty między wątkami. Lub - Zwiększ liczbę procesów/sesji, które Oracle może obsługiwać jednocześnie.
Właściwie łączenie połączeń (#1) powinno być zawsze wykonywane. W inny sposób nie można skalować aplikacji. Sprawdź DBCP Apache Commons dla szczegółów. W przypadku #2 otwórz nową sesję SQL*Plus jako SYSTEM i uruchom:
ALTER system SET processes=<n-as-per-number-of-threads> scope=spfile;
w celu zwiększenia współbieżności zaplecza. Następnie RESTART Bazę Danych. WAŻNE!