Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Probelm z InterClinetem / InterServerem

2 views
Skip to first unread message

fsol

unread,
Jul 4, 2001, 3:55:58 AM7/4/01
to
Witam

Mam zainstalowany sterownik JDBC do InterBasa w wersji 2.0 i mam problem przy ustanawianiu dużej liczby połączeń z baza danych (InterServerem).

Jeżeli servlet ustanowi około 40 połączeń w ciągu minuty (otwarcie połączenia, wykonanie operacji na bazie, commit, close),
to przy kolejnych występuje błąd:

java.lang.VerifyError: (class: interbase/interclient/ErrorKey, method: _$372 signature: (Ljava/lang/String;Ljava/lang/String;I)V) Expecting to find unitialized object on stack
at interbase.interclient.JDBCNet._$125439(JDBCNet.java:92)
at interbase.interclient.JDBCNet.<init>(JDBCNet.java:74)
at interbase.interclient.Connection._$45044(Connection.java:317)
at interbase.interclient.Connection.<init>(Connection.java:285)

Jeżeli po tym błędzie poczekam około minuty, to ponowne połączenia przebiegają pomyślnie - jednak sytuacja powtarza się j.w.




Po uruchomieniu appletu CommDiag.html (który jest w archiwum instalacyjnym InterClienta), nawiązaniu i zamknięciu kliku szybkich połączeń, przy 4-5 próbie występuje błąd:

***** SQLException *****
SQL State: ICJE2
Error Code: 1
Message: [interclient] Communication error: A socket exception occurred while trying to establish a socket connection to server 127.0.0.1.
The message of the SocketException is "No available buffer space".
See API reference for exception interbase.interclient.CommunicationException

Wynika z tego (?), że każdemu połączniu InterServer przydziela bufor, który zajmuje pamięć przez około 60 sek po zamknięciu połączenia.

Mam pytanie:
- w jakis posób sprawić, aby każdemu z połączeń InterServer przydzielał mniej buforu, lub aby bufor dla połączenia był zwalniany natychmiast po wywołaniu metody java.sql.Connection.close() ?

W jaki sposób zwalczyć te problemy ?

z góry dzięki za pomoc,

fsol

Mariusz A. Jasiński

unread,
Jul 4, 2001, 5:25:16 AM7/4/01
to
fsol wrote:
>
> Mam pytanie:
> - w jakis posób sprawić, aby każdemu z połączeń InterServer przydzielał mniej buforu, lub aby bufor dla połączenia był zwalniany natychmiast po wywołaniu metody java.sql.Connection.close() ?
>
> W jaki sposób zwalczyć te problemy ?

może zastosować pulę połączeń (pooling) i nie zamykać ich fizycznie,
nie wystarczy Ci np. ze 30 połączeń w puli

________________________________________
Mariusz A. Jasinski

T-Systems
debis IT Services Polska Sp. z o.o.
Software Engineer
address: ul. Olawska 2, 50-123 Wroclaw
phone: +48 71 3438881, 205
fax: +48 71 3725765
mariusz....@debis.pl
http://www.debis.pl

fsol

unread,
Jul 4, 2001, 5:44:55 AM7/4/01
to
Użytkownik "Mariusz A. Jasiński" <mariusz....@debis.pl> napisał w wiadomości news:3B42E0FC...@debis.pl...
> fsol wrote:
> >
[...]
>
> może zastosować pulę połączeń (pooling) i nie zamykać ich fizycznie,
> nie wystarczy Ci np. ze 30 połączeń w puli
[...]

W InterCliencie nie zaimplementowano jeszcze póli połączeń na poziomie sterownika JDBC, dlatego napisałem Managera który otwiera i zarządza połączeniami, działa świetnie przyspieszając działanie, jednak i tu jest problem - przy otwarciu więcej niż ok. 25 połączeń na raz, karta sieciowa dostaje szału (serwer baz danych jest na innej maszynie) i wiesza się, trzeba zastopować inet deamona i uruchmić ponownie aby wszystko z powrotem zaczęło działać.

Otwarcie 20 połączeń na raz umożliwia wygodą pracę dla około 50ciu użytkowników korzystających na raz z bazy, chciałbym osiągnąć wydajność przy której 200 użytkowników na raz nie miao by większych problemów przy korzystaniu z systemu, dlatego chciałem 'wrócić' do tradycyjnego sposobu mając nadzieję, że umożliwi otwarcie większej liczby połączeń na raz...

pozdrawiam,
fsol
--------------------
F|_|T|_|Re S[]|_||\||> []f L[]|\||>[]|\|
0 new messages