Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 10 of 26 total
Thread CS Performance Problem from Remote Site
Mon, Apr 21 2008 2:04 PMPermanent Link

Gordon Turner
I have a customer who is using DBISAM v4.25b7.  The server runs on a
Win2003 server.  For some of the client connections the time to open the
session is terrible.  (I have a Eureka log entry pointing to the
Session.Activate statement for a time out after 120 seconds.)

For example, he reports "I just tried from home and after 11 minutes it
finally launched.  We have fat WAN connections to our other sites
(43Mbps) and I have high speed extreme at home (10 Mbps)".  The app is
using ports 12005 and 12006 (the standard ports) to connect to the
server.  The client app is written in D7 and is being launched from a
shared folder on their network.

This is my first CS customer installation, and although the local
clients connect fine, it appears there is a big problem with remote (off
site) clients.  I'm not sure where to begin resolving this problem.  Any
help would be appreciated.
--
Gordon Turner
Mycroft Computing
http://www.mycroftcomputing.com
Mon, Apr 21 2008 7:04 PMPermanent Link

"Adam H."
Good Morning Gordon,

>I have a customer who is using DBISAM v4.25b7.  The server runs on a
>Win2003 server.  For some of the client connections the time to open the
>session is terrible.  (I have a Eureka log entry pointing to the
>Session.Activate statement for a time out after 120 seconds.)

As a thought - have you tried connecting to the server externally from your
own application (ie, via DBSYS for instance)? This could help diagnose
whether the problem is related to something within your application, or if
it's external to your application.

Cheers

Adam.
Tue, Apr 22 2008 5:46 AMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Gordon,

<< This is my first CS customer installation, and although the local clients
connect fine, it appears there is a big problem with remote (off site)
clients.  I'm not sure where to begin resolving this problem.  Any help
would be appreciated. >>

What you should do is this:

1) Have your customer grab a copy of DBSYS here:

http://www.elevatesoft.com/download?action=downinfo&producttype=dbisamadd&version=4

and install it.

2) Have them launch DBSYS, and then select File..Options..Remote and input
the proper server information in terms of IP address, etc.

3) Have them try to open a table on the remote database server using
File..Open Table.

4) If it doesn't take that long, then the issue is most likely one with your
application.  The next step is to turn on remote tracing in your application
and use it to log all remote requests/responses to a file.  You can see how
to do this in the DBSYS source code:

main.pas

uses dbisamlb, dbisamut;  <<< Important

procedure TMainForm.OpenLogFile;
begin
  ForceDirectories(ExtractFilePath(GetLogFileName(AppVersionInformation)));
  System.AssignFile(TraceLogFile,GetLogFileName(AppVersionInformation));
  if FileExists(GetLogFileName(AppVersionInformation)) then
     System.Append(TraceLogFile)
  else
     System.Rewrite(TraceLogFile);
end;

procedure TMainForm.CloseLogFile;
begin
  System.CloseFile(TraceLogFile);
end;

procedure TMainForm.RemoveLogFile;
begin
  SysUtils.DeleteFile(GetLogFileName(AppVersionInformation));
end;

procedure TMainForm.RemoteSessionRemoteTrace(Sender: TObject;
                                            TraceRecord: TTraceRecord);
var
  TempString: string;
begin
  with TraceRecord do
     begin
     TempString:=PadRight(DateTimeToStr(DateTime),24,' ');
     case EventType of
        teConnect:
           TempString:=TempString+' '+PadRight('Connect',10,' ')+
                                  ' '+PadRight(IntToStr(ElapsedTime)+'
msecs',16,' ');
        teReconnect:
           TempString:=TempString+' '+PadRight('Re-connect',10,' ')+
                                  ' '+PadRight(IntToStr(ElapsedTime)+'
msecs',16,' ');
        teDisconnect:
           TempString:=TempString+' '+PadRight('Disconnect',10,' ')+
                                  ' '+PadRight(IntToStr(ElapsedTime)+'
msecs',16,' ');
        teRequest:
           TempString:=TempString+' '+PadRight('Request',10,' ')+
                                  ' '+PadRight(IntToStr(ElapsedTime)+'
msecs',16,' ')+
                                  ' '+PadRight(RemoteRequestName,30,' ')+
                                  '
'+PadRight(IntToStr(RemoteRequestSize)+' bytes',16,' ');
        teReply:
           TempString:=TempString+' '+PadRight('Reply',10,' ')+
                                  ' '+PadRight(IntToStr(ElapsedTime)+'
msecs',16,' ')+
                                  ' '+PadRight(RemoteReplyResultName,30,'
')+
                                  ' '+PadRight(IntToStr(RemoteReplySize)+'
bytes',16,' ');
        end;
     end;
  WriteLn(TraceLogFile,TempString);
end;

The dbisamut.pas unit is in the same directory as the DBSYS source code -
\utils\dbsys\source under the main installation directory.

Be sure to enable the TDBISAMSession.RemoteTrace property for the remote
session in your application, and then hook up the above event handler to the
TDBISAMSession.OnRemoteTrace event.

Once you've done this, this new "traceable" version of the application
should create a text file on their local disk that they can send you.  This
text file is what I need to see what is going on, so if you could email it
to me, I can tell you what is happening that is responsible for such a
slowdown.  Usually the issues is one revolving around lookups or calculated
fields.

--
Tim Young
Elevate Software
www.elevatesoft.com

Tue, Apr 22 2008 11:12 AMPermanent Link

Gordon Turner
Tim Young [Elevate Software] wrote:
>
> What you should do is this:
>
> 1) Have your customer grab a copy of DBSYS here:
>
> http://www.elevatesoft.com/download?action=downinfo&producttype=dbisamadd&version=4
>
> and install it.
>
> 2) Have them launch DBSYS, and then select File..Options..Remote and input
> the proper server information in terms of IP address, etc.
>
> 3) Have them try to open a table on the remote database server using
> File..Open Table.

Thanks Tim.  A quick question - I know the application and DB Server
need to be using the same DBISAM version.  Is this also true of the
DBSYS utility?  I have the install module for DBSYS for version 4.25b7
(which the customer is using), and for the current version 4.26b2.
--
Gordon Turner
Mycroft Computing
http://www.mycroftcomputing.com
Thu, Apr 24 2008 11:37 AMPermanent Link

"David Farrell-Garcia"
Gordon Turner wrote:

> I have a customer who is using DBISAM v4.25b7.  The server runs on a
> Win2003 server.  For some of the client connections the time to open
> the session is terrible.  (I have a Eureka log entry pointing to the
> Session.Activate statement for a time out after 120 seconds.)
>
> For example, he reports "I just tried from home and after 11 minutes
> it finally launched.  We have fat WAN connections to our other sites
> (43Mbps) and I have high speed extreme at home (10 Mbps)".  The app
> is using ports 12005 and 12006 (the standard ports) to connect to the
> server.  The client app is written in D7 and is being launched from a
> shared folder on their network.
>
> This is my first CS customer installation, and although the local
> clients connect fine, it appears there is a big problem with remote
> (off site) clients.  I'm not sure where to begin resolving this
> problem.  Any help would be appreciated.



--
David Farrell-Garcia
Whidbey Island Software, LLC

if they are launching the app remotely from a shared folder on the
server, that willl likely be your problem rather then a bottleneck at
the database server.  It can take a long time to open an application
remotely over the Internet.  If you must do it that way, try Terminal
Server.  That will be very fast.  Believe it or not, I still have an
old Delphi 1 app with a Dbase backend that is still in service with
many remote clients accessing via Terminal Server.

The other solution, other then going to a web interface is to install
the client app on the remote machine.
Thu, Apr 24 2008 3:31 PMPermanent Link

Gordon Turner
Tim Young [Elevate Software] wrote:
>
> 4) If it doesn't take that long, then the issue is most likely one with your
> application.  The next step is to turn on remote tracing in your application
> and use it to log all remote requests/responses to a file.  You can see how
> to do this in the DBSYS source code:

I've posted the log file in Binaries.  Please let me know if you find
anything.

--
Gordon Turner
Mycroft Computing
http://www.mycroftcomputing.com
Thu, Apr 24 2008 3:53 PMPermanent Link

"Jose Eduardo Helminsky"
David

I am using Terminal Server since december 2005 and now we have two servers
each one holding around 25 users and another 40 LAN users.

The remote sites are connected by a frame relay with just 128Kb and
accessing the application via Terminal Server client. The speed is the same
as lan users.

Eduardo

Thu, Apr 24 2008 11:38 PMPermanent Link

Gordon Turner
Unfortunately, this is the CS version of a standard product I sell, so I
have no say about the customer's environment.  But if they are
connecting at 10MB, I would not expect the application to take minutes
to load.  It's not that big or complex - just the exe and one DLL, and
the exe is only a couple MB.

--
Gordon Turner
Mycroft Computing
http://www.mycroftcomputing.com
Fri, Apr 25 2008 7:38 AMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Gordon,

< I've posted the log file in Binaries.  Please let me know if you find
anything. >>

Is that entire log just the startup calls until the application is done
loading ?

--
Tim Young
Elevate Software
www.elevatesoft.com

Sat, Apr 26 2008 3:40 PMPermanent Link

Gordon Turner
Tim Young [Elevate Software] wrote:
> Gordon,
>
> < I've posted the log file in Binaries.  Please let me know if you find
> anything. >>
>
> Is that entire log just the startup calls until the application is done
> loading ?
>

No.  The customer decided to perform some additional functions while
recording the log.  I assumed that if there was a problem, it would jump
out as a long delay in the log itself.  I can have him generate it again
with just the startup and shut down, or is there a way to
programatically stop the log once the application as completed the
startup process.
--
Gordon Turner
Mycroft Computing
http://www.mycroftcomputing.com
Page 1 of 3Next Page »
Jump to Page:  1 2 3
Image