INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Jobs

xBase++ client performance degration as database files are opened locally on the server

xBase++ client performance degration as database files are opened locally on the server

xBase++ client performance degration as database files are opened locally on the server

(OP)
I have a project converting a large clipper 5.2 system to xBase++.
The system uses DBF/FPT/CDX files with the FOXCDX dbe.
In operational testing I found a strange performance issue which is described below.
Perhaps it is something in my dbe setup? I’ve included my dbesys.prg. It’s setup for clipper compatibility but that is not a requirement for the new system.
Thanks,
Tim


Test Setup
--------------
• Three client platforms and two server platforms, all under controlled conditions.
• Clients: Win7 10/100, Win7 gb, Win Server 2008 R2 via XenApp
• Servers: Win Server 2012 R2, Win Server 2008 R2 (VMware virtual machine)
• xBase++: 2.00.785
• Dbe: FOXCDX (see dbesys.prg example)
• Client test function: representative function that creates a DBF/CDX file on the client C: drive from data assembled from multiple open data files residing on the server.

Test Procedure
------------------
1. Reboot the server
2. On a client map a drive to the server database share
3. Run the app from the client c: drive, starting it in the mapped server folder – performance is good for multiple simultaneous clients
4. Run an app locally on the server and open files in the same database folder as the client
5. As the number of files opened locally on the server increases the client performance degrades significantly for all clients, even new instances on different machines (see graph)
6. Close the locally opened files on the server
7. Client performance remains degraded

Notes
-------
• The performance is poor for all subsequent clients once a database folder has files opened locally on the server
• The performance degradation is limited to the specific folder containing the database. That is, if you run the tests on a database in a different server folder the performance is good until files begin to be opened on the server in the this new folder.
• A server reboot is required to fully clear the database folder “contamination”
• The results in the graph are representative, many more combinations were tried with the same results
• The results are the same for all client and server combinations

DBESYS.PRG
----------
#include "AppEvent.ch"
#include "dbfdbe.ch"
#include "foxdbe.ch"
#include "cdxdbe.ch"
#include "dmlb.ch"

PROCEDURE dbeSys() // Set the database driver

set(_SET_COLLATION, -1) // -1 = ASCII from xbase 2.0 collat.ch; definition from SET COLLATION TO in std.ch uses ASCII which appears to be the clipper default

// Load engines and build
DbeLoad( "FOXDBE", .T.)
DbeLoad( "CDXDBE",.T.)
DbeBuild( "FOXCDX", "FOXDBE", "CDXDBE" )

// Set up for Fox 2.x compatabilty
// The Clipper apps will use cmxfox52.obj to force Fox 2.x locking compatability
DbeInfo(COMPONENT_DATA, FOXDBE_CREATE_2X, .T. )
DbeInfo(COMPONENT_DATA, FOXDBE_LOCKMODE, FOXDBE_LOCKMODE_VISUAL) // Respects clipper locks (f and r) when clipper linked with CMXFOX52.obj
//DbeInfo(COMPONENT_DATA, FOXDBE_LOCKMODE, FOXDBE_LOCKMODE_2X) // Respects clipper file locks, not rlocks
//DbeInfo(COMPONENT_DATA, FOXDBE_LOCKMODE, FOXDBE_LOCKMODE_AUTO) // Not tested
//DbeInfo(COMPONENT_DATA, FOXDBE_LOCKMODE, FOXDBE_LOCKMODE_CLIPPER) // Respects all locks but need to remove cmxfox52.obj from link script

// Set default DBE to DBFCDX
DbeSetDefault( "FOXCDX" )

// Increase the index file lock retry count
// index files are locked exclusively whenever they are WRITTEN and *READ*
// increasing this timeout helps avoid failure of this lock under increasing loads
// this is a possibility
DbeInfo( COMPONENT_DATA, CDXDBE_LOCKRETRY, 1000000)
// Configure CDXDBE for COMIX compatability == FoxPro 2.x CDX's
DbeInfo( COMPONENT_ORDER, CDXDBE_MODE, CDXDBE_COMIX )

RETURN


Red Flag This Post

Please let us know here why this post is inappropriate. Reasons such as off-topic, duplicates, flames, illegal, vulgar, or students posting their homework.

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Reply To This Thread

Posting in the Tek-Tips forums is a member-only feature.

Click Here to join Tek-Tips and talk with other members!

Resources

Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close