Discussion:
[ORACLE] ORA-12537: TNS:connection closed
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Slawomir Cichy
2006-03-28 11:04:14 UTC
Permalink
Server: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -
64bit Production

OS: Sun Solaris

Witam,

Od jakiegos czasu zwiekszyl mi sie ruch do bazy danych. Ogolnie
aplikacja powinna byc przepisana na pooling, ale poki co musze liczyc
tylko i wylacznie na siebie.
Aplikacja nie dziala w pooling'u i generuje mnustwo polaczen podczas
pracy co powoduje, a listenery nie nadazaja z alokacja portow w
polaczeniach z instancja bazodanowa. Polaczenia typu "DEDICATED SERVER".

Niestety zdarza mi sie dostawac: ORA-12537: TNS:connection closed

Kroki jakie podjalem aby sie tego pozbyc:
1. Postawilem 4 listenery nasluchujace na roznych portach, a aplikacje
tak skonfigurowalismy, by za kazdym nowym polaczeniem odwolywaly sie do
innego portu (cyklicznie)
2. zwiekszylem queuesize=40

Wiem, ze pewnie kolenym krokiem powinno byc skonfigurowanie MTS'a, ale
nie chcialbym tego robic ze wzgledu na charakter pozostalych aplikacji
korzystajacych z tego serwera.


Panie i Panowie, moze macie jakies pomysly? Gdzies czytalem, ze mozna by
bylo skonfigurowac listenera tak, by nie alokowal portow instancji
(powyzej 50000), ale uzywal socketow - to moglo by mi przyspieszyc
nawiazywanie polaczen, ale nie moge tego artykulu (wraz z nazwa
odpowiedniego prametru) znalezc :(

pozdrawiam
Slawas
dap
2006-03-31 19:22:23 UTC
Permalink
Post by Slawomir Cichy
1. Postawilem 4 listenery nasluchujace na roznych portach, a aplikacje
tak skonfigurowalismy, by za kazdym nowym polaczeniem odwolywaly sie do
innego portu (cyklicznie)
2. zwiekszylem queuesize=40
Wiem, ze pewnie kolenym krokiem powinno byc skonfigurowanie MTS'a, ale
nie chcialbym tego robic ze wzgledu na charakter pozostalych aplikacji
korzystajacych z tego serwera.
Panie i Panowie, moze macie jakies pomysly? Gdzies czytalem, ze mozna by
bylo skonfigurowac listenera tak, by nie alokowal portow instancji
(powyzej 50000), ale uzywal socketow - to moglo by mi przyspieszyc
nawiazywanie polaczen, ale nie moge tego artykulu (wraz z nazwa
odpowiedniego prametru) znalezc :(
Hmm a mozna wiedziec ile masz tych polaczen? Ja spotkalem niestaty z
maksymalnie 2-5 na sekunde i bylo ok, ale spodziewam sie, ze u Ciebie to
jest ze 100 :)

Moze to byc tez problem Solarisa i polaczen TCP/IP...

Moze pomoze ustawienie SQLNET.EXPIRE_TIME na jakis rozadny czas, aby
kasowac sesje ktore sa nieaktywne.

Albo moze sprobuj uzywc remote_listener - po to by calkiem inny serwer
otwieral polaczenia do serwera bazodanowego (cos podobnego jak RAC).

dap
Slawomir Cichy
2006-04-04 09:00:50 UTC
Permalink
Post by dap
Post by Slawomir Cichy
1. Postawilem 4 listenery nasluchujace na roznych portach, a aplikacje
tak skonfigurowalismy, by za kazdym nowym polaczeniem odwolywaly sie
do innego portu (cyklicznie)
2. zwiekszylem queuesize=40
Wiem, ze pewnie kolenym krokiem powinno byc skonfigurowanie MTS'a, ale
nie chcialbym tego robic ze wzgledu na charakter pozostalych aplikacji
korzystajacych z tego serwera.
Panie i Panowie, moze macie jakies pomysly? Gdzies czytalem, ze mozna
by bylo skonfigurowac listenera tak, by nie alokowal portow instancji
(powyzej 50000), ale uzywal socketow - to moglo by mi przyspieszyc
nawiazywanie polaczen, ale nie moge tego artykulu (wraz z nazwa
odpowiedniego prametru) znalezc :(
Hmm a mozna wiedziec ile masz tych polaczen? Ja spotkalem niestaty z
maksymalnie 2-5 na sekunde i bylo ok, ale spodziewam sie, ze u Ciebie to
jest ze 100 :)
ok. 100/s - tyle powinienem obsluzyc
Post by dap
Moze to byc tez problem Solarisa i polaczen TCP/IP...
nie, nie jest to problem Solarisa i polaczen TCP/IP - polaczenia sa
obslugiwane przez listenera i zglaszaja blad oracle'a - nie dostaje "end
of communication channel", ktory bym dostal, gdyby to byl problem
"zewnetrzny" i sprawdzilismy tez logi systemu - od 212 dni (uptime) mam
dokladnie 0 bledow zwiazanych z kolejka TCP/IP
Post by dap
Moze pomoze ustawienie SQLNET.EXPIRE_TIME na jakis rozadny czas, aby
kasowac sesje ktore sa nieaktywne.
To raczej nie ma wplywu - problem jest z nawiazaniem polaczenia, a nie z
ich iliscia. Jak zagladam do loga listenera'a to wyraznie widac, ze ma
problem z kolejka polaczen do instancji oracle'a - nie nadaza z ich
alokacja portow, w przypadku gdy mam ponad 40 konkurencyjnych polaczen.
Post by dap
Albo moze sprobuj uzywc remote_listener - po to by calkiem inny serwer
otwieral polaczenia do serwera bazodanowego (cos podobnego jak RAC).
Juz o tym tez pomyslalem, jest to jakies rozwiazanie. Na mailowej liscie
dyskusyjnej oracle-***@lists.wp.pl kolega zaproponowal by zadedykowac
jeden z listenerow pod MTS'a i na niego puscic ruch - sprobuje tez tego.

Dzieki za pomysly i biore sie do roboty :)

Slawas
dap
2006-04-04 17:27:39 UTC
Permalink
Post by Slawomir Cichy
Juz o tym tez pomyslalem, jest to jakies rozwiazanie. Na mailowej liscie
jeden z listenerow pod MTS'a i na niego puscic ruch - sprobuje tez tego.
Dzieki za pomysly i biore sie do roboty :)
Napisz jeszcze do Supportu Oracle - oni maja czasami takie magiczne
parametery :) i w wypadku tej bazy raczej bede one przydatne.

dap

Loading...