Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 10 of 10 total
Thread Server locking at least once a day
Mon, Nov 26 2007 11:37 PMPermanent Link

"Al Vas"
Hi,

We have a client who uses on of our products and they claim that at least
once a day (intermittently) they cannot access the product.  When the IT
admin stops and restarts the DBISAM server it is fine again.  He sent me the
server log and the following is of interest:

26/11/2007 2:08:01 PM Session not found, re-connection rejected [Address:
10.8.214.34 Version: 3.30 Request: REQUEST_RECONNECT Thread: 204 Session: 0]
26/11/2007 2:08:01 PM Connection closed [Address: 10.8.214.34 Version: 3.30
Thread: 204 Session: 0]

Firstly do you know what this means, that session is not found and why this
would be occurring and what we can look at to try and ascertain the issue.
It is DBISAM V3.30.

Thanks

Alex

Tue, Nov 27 2007 1:29 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Alex,

<< Firstly do you know what this means, that session is not found and why
this would be occurring and what we can look at to try and ascertain the
issue. It is DBISAM V3.30. >>

It means the database server removed the session because it was considered
to be a "dead" session or else the database server was stopped and
restarted, thus permanently removing the session and preventing the remote
session from reconnecting.

--
Tim Young
Elevate Software
www.elevatesoft.com

Tue, Nov 27 2007 6:02 PMPermanent Link

"Al Vas"
Hi Tim,

So how does this occur?  A timeout?  Where should we look to resolve this
issue?  The client gets lockups at least once a day and has to reset
database server to resolve.

Any advice appreciated.

Alex


"Tim Young [Elevate Software]" <timyoung@elevatesoft.com> wrote in message
news:6EBC4A2B-3AE5-4DE4-B984-CFADC59E599F@news.elevatesoft.com...
> Alex,
>
> << Firstly do you know what this means, that session is not found and why
> this would be occurring and what we can look at to try and ascertain the
> issue. It is DBISAM V3.30. >>
>
> It means the database server removed the session because it was considered
> to be a "dead" session or else the database server was stopped and
> restarted, thus permanently removing the session and preventing the remote
> session from reconnecting.
>
> --
> Tim Young
> Elevate Software
> www.elevatesoft.com
>

Tue, Nov 27 2007 8:24 PMPermanent Link

"Jeff Cook"
Al Vas wrote:

> Hi Tim,
>
> So how does this occur?  A timeout?  Where should we look to resolve
> this issue?  The client gets lockups at least once a day and has to
> reset database server to resolve.
>
> Any advice appreciated.
>
> Alex
>
>
Kia Orana Al

I think that v4 DBISAM has a ping mechanism to fix this problem but I,
like you, am on v3.30, so I have a TTimer in my datamodule that is set
for a 60000 interval with code like this:-

procedure TapmDM.ConnectionTimerTimer(Sender: TObject);
var
 dOnServer: TDateTime;
begin
 dOnServer := APM.Session.GetRemoteDateTime;//APM is my database
end;

Kia Manuia

Jeff

--
Jeff Cook
Aspect Systems Ltd
www.aspect.co.nz
+
Joan and Jeff Cook
The Cooks Oasis
www.cookislandsoasis.com
Wed, Nov 28 2007 8:38 AMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Alex,

<< So how does this occur?  A timeout?  Where should we look to resolve this
issue?  The client gets lockups at least once a day and has to reset
database server to resolve. >>

There are two issues at play here.  One is the database server not
responding (or is it the client application which isn't responding ?), which
is a whole separate issue.  The other is the issue of the reconnection being
rejected, which can be resolved by either:

a) Increasing the timeout value for sessions on the database server via this
TDBISAMSession method:

     procedure ModifyRemoteConfig(DenyLogins: Boolean; MaxConnections:
Word;
                                  ConnectTimeout: Word;
DeadSessionInterval: Word;
                                  DeadSessionExpires: Word;
MaxDeadSessions: Word;
                                  const TempDirectory: string;
                                  AuthorizedAddresses: TStrings;
BlockedAddresses: TStrings);

or via the Server Administration Utility.

b) Do what Jeff suggested, and create the equivalent of DBISAM 4's ping
functionality.

--
Tim Young
Elevate Software
www.elevatesoft.com

Wed, Nov 28 2007 5:35 PMPermanent Link

"Al Vas"
Thanks Tim,

So if I understand this correctly, lets say timeout is 300 seconds (default
value), then if the user doesn't use the application for at least 5 minutes
but it is still running on the PC, then the database engine disconnects the
session and it cannot be recovered?  So pinging every minute or so resolves
this.

Regards

Alex


"Tim Young [Elevate Software]" <timyoung@elevatesoft.com> wrote in message
news:0D5BF9F3-C883-40D9-92B4-547F1059F6EC@news.elevatesoft.com...
> Alex,
>
> << So how does this occur?  A timeout?  Where should we look to resolve
> this issue?  The client gets lockups at least once a day and has to reset
> database server to resolve. >>
>
> There are two issues at play here.  One is the database server not
> responding (or is it the client application which isn't responding ?),
> which is a whole separate issue.  The other is the issue of the
> reconnection being rejected, which can be resolved by either:
>
> a) Increasing the timeout value for sessions on the database server via
> this TDBISAMSession method:
>
>      procedure ModifyRemoteConfig(DenyLogins: Boolean; MaxConnections:
> Word;
>                                   ConnectTimeout: Word;
> DeadSessionInterval: Word;
>                                   DeadSessionExpires: Word;
> MaxDeadSessions: Word;
>                                   const TempDirectory: string;
>                                   AuthorizedAddresses: TStrings;
> BlockedAddresses: TStrings);
>
> or via the Server Administration Utility.
>
> b) Do what Jeff suggested, and create the equivalent of DBISAM 4's ping
> functionality.
>
> --
> Tim Young
> Elevate Software
> www.elevatesoft.com
>

Wed, Nov 28 2007 6:34 PMPermanent Link

Eryk Bottomley
Al,


> So if I understand this correctly, lets say timeout is 300 seconds (default
> value), then if the user doesn't use the application for at least 5 minutes
> but it is still running on the PC, then the database engine disconnects the
> session and it cannot be recovered?  So pinging every minute or so resolves
> this.

No, after 300 seconds the server disconnects the client but keeps the
session around in a suspended state until the dead session expiry time
is reached (I can't remember the default for that - I think it is 60000
seconds).

If the client becomes active again between those two times (300s and
60000s) then it will transparently reconnect and the user can proceed as
if nothing had happened.

Eryk
Wed, Nov 28 2007 7:06 PMPermanent Link

"Al Vas"
K thanks Eryk,

So there is really no point pinging every minute from the client?

Alex

"Eryk Bottomley" <no@way.com> wrote in message
news:797A55CD-8B01-4D0E-A692-A5EA7D1FA725@news.elevatesoft.com...
> Al,
>
>
>> So if I understand this correctly, lets say timeout is 300 seconds
>> (default value), then if the user doesn't use the application for at
>> least 5 minutes but it is still running on the PC, then the database
>> engine disconnects the session and it cannot be recovered?  So pinging
>> every minute or so resolves this.
>
> No, after 300 seconds the server disconnects the client but keeps the
> session around in a suspended state until the dead session expiry time is
> reached (I can't remember the default for that - I think it is 60000
> seconds).
>
> If the client becomes active again between those two times (300s and
> 60000s) then it will transparently reconnect and the user can proceed as
> if nothing had happened.
>
> Eryk

Wed, Nov 28 2007 7:34 PMPermanent Link

Eryk Bottomley
Al,

> So there is really no point pinging every minute from the client?

The point of a "ping" is so that you can set the dead session expiration
to a low value to ensure that server side resources are freed up
promptly in cases where you expect there to be lots of sessions that may
go silent and never come back to life. In this scenario the "ping" keeps
the client connection active so that the server can aggressively recycle
any sessions that stop pinging.

Eryk
Thu, Nov 29 2007 12:49 AMPermanent Link

"Al Vas"
Ahh, k thanks for that Eryk.
"Eryk Bottomley" <no@way.com> wrote in message
news:B81CC411-0F03-49E7-B388-8E6519BFC43F@news.elevatesoft.com...
> Al,
>
>> So there is really no point pinging every minute from the client?
>
> The point of a "ping" is so that you can set the dead session expiration
> to a low value to ensure that server side resources are freed up promptly
> in cases where you expect there to be lots of sessions that may go silent
> and never come back to life. In this scenario the "ping" keeps the client
> connection active so that the server can aggressively recycle any sessions
> that stop pinging.
>
> Eryk

Image