Easysoft ODBC-ODBC Bridge

Why does it take so long to connect to the server?

Article:
00055
Last Reviewed:
28th October 2008
Revision:
2

In our experiments it takes less than 1/10 second to connect an application linked directly with the OOB client on Linux to a data source on NT over a 100Mb Ethernet link where both machines are on the same LAN. This is a small fraction of a second slower for interpreted languages like Perl or if there is a driver manager (like unixODBC) between the application and the OOB client.

If you are experiencing connect times much slower than 1 second you should check the following:

  1. Are the client and server machines on the same Local Area Network (LAN)?

    Connection times can increase dramatically if they are not. Try pinging the server from the client and see what return times you get.

    e.g.

    ping www.easysoft.com
    PING easysoft.com (194.131.236.4): 56 data bytes
    64 bytes from 194.131.236.4: icmp_seq=0 ttl=255 time=0.6 ms
    64 bytes from 194.131.236.4: icmp_seq=1 ttl=255 time=0.1 ms

    In this case less than 0.6ms - quick. Machines not on the same LAN can show a much greater time and this will be reflected in your ODBC connect times.

  2. Disable Reverse Lookups in the OOB Server. Performing a reverse lookup on an IP address can be quite slow depending on how the machine is configured to perform the reverse lookup. You can do this from the OOB HTTP Server configuration screen. See question "Are there any configurable options for the OOB".

  3. Check that you do not have any tracing turned on. There are multiple places tracing and logging may be turned on:

    1. Make sure that in your odbc.ini file any lines starting with "Logging = number_greater_than_0" are commented out with # or just delete them (this is OOB tracing).
    2. If you are using the unixODBC Driver Manager then remove lines
      that look like "Trace = yes" and "TraceFile = file" or ensure Trace is set to no.
    3. Make sure you have not turned on tracing at the server end. You can check this through a web browser to http://server_machine:8890 and then Configuration. Logging should be set to 0. Alternatively on UNIX examine the server odbc.ini/esoobserver.ini file or on Windows examine the registry for: HKEY_LOCAL_MACHINE SOFTWARE Easysoft ODBC-ODBC Bridge Configuration System Settings Logging
    4. If using Windows make sure tracing in the driver manager is not turned on. You can check this by going in to the ODBC Administrator and clicking on the tracing tab.
  4. All of the above default to tracing off or require positive action to turn tracing on.
  5. You can make the OOB Server start a new thread or a new process for each connection. By default, the OOB server starts a new thread but if bit 3 (value 0x4) of the configurable parameter "Flags" is set the server starts a new process - this is a lot slower. You can check Flags as above for Logging.
  6. Obtaining a license slot adds a small amount of time to a connection (much less than 1/10s). However, if you are limited through your license to a set number of concurrent connections the OOB Server, by default, tries 5 times at 3 second intervals to obtain a license slot before giving up. The retry attempts and pause between attempts is configurable via the RetryCount and RetryPause parameters.
  7. Check your application is not turning ODBC tracing on by calling SQLSetConnectAttr(SQL_ATTR_TRACE, SQL_OPT_TRACE_ON).

If after checking the above you are still want faster connections then try using persistent ODBC connections (e.g. odbc_pconnect in PHP) as these hold connections open for use by the call to an ODBC connect functionwith the same DSN.

Applies To

Knowledge Base Feedback

* Did this content help you?
* Please select one option based on your first choice:

(* Required Fields)


Oracle is a registered trademark of Oracle Corporation and/or its affiliates.