• Topic
  • Discussion
  • UdaWikiWeb.RemoteSystemError(Last) -- Owiki? , 2016-08-19 15:00:52 Edit owiki 2016-08-19 15:00:52

    Error Message: RPC: Remote System error or Program Unavailable

    General Cases

    The Multi-Tier Generic Client (whether ODBC Driver, JDBC Driver, or ADO.NET Provider) expects to find a running Request Broker. Specifically, it will call for the Broker at the machine and port specified in the Host field of the client DSN (e.g., broker-host.example.com:5000). If a running Broker cannot be reached, Remote System and Program Unavailable errors occur. The most common causes of these errors should be resolved by the steps below.

    1. Ensure that the OpenLink Request Broker and Database Agents are installed somewhere on the network. Typically, these components are installed on the database server. However, they are occasionally installed on clients or third-tier "gateway" hosts. If in doubt, use the Windows Explorer or the Unix find command to search for the oplrqb executable.
    2. Review your client's DSN.
      • Ensure that the Host field passes the IP address or a DNS-resolvable fully qualified hostname (e.g., broker-host.example.com) of the machine which contains the OpenLink Request Broker.
      • Ensure that the Broker's Listen port (found in the [Protocol TCP] stanza of the Broker Rulebook, oplrqb.ini) is also specified in the DSN, whether in its own field (e.g., Port = 5000), or as part of the Server field (e.g., Host = brokerhost.example.com:5000). The following examples are all equivalent --


        [OpenLink Multi-Tier DSN 1] Driver = /home/openlink/lib/oplodbc.so Description = Sample OpenLink DSN Host = broker-host.example.com:5000 [OpenLink Multi-Tier DSN 2] Driver = /home/openlink/lib/oplodbc.so Description = Sample OpenLink DSN Host = 192.168.123.234 Port = 5000 [OpenLink Multi-Tier DSN 3] Driver = /home/openlink/lib/oplodbc.so Description = Sample OpenLink DSN Host = 192.168.123.234:5000

      • If you specify the Broker host by hostname, substitute the machine's IP address and retest; success with this substitution indicates issues with the client host's DNS setup and/or server. You can also test for DNS issues by "pinging" the Broker host by name and by address (ctrl-C to exit the ping utility) --


        ping broker-host.example.com ping 192.168.123.231

    3. Ensure that the Request Broker is running. Unix users generally start the Broker with the commands --


      . /path/to/openlink.sh oplrqb

      Windows users generally start the OpenLink Request Broker service through the Services control panel.
    4. If the Broker is running, determine whether firewalls exist between the client and the machine with the Broker. If firewalls exist, take the following action:
      1. Open the active Rulebook file (~/openlink/bin/oplrqb.ini by default) with a text editor.
      2. Locate the [Protocol TCP] section.
      3. Record the values passed to PortLow and PortHigh. If PortHigh is set to no value, is not set, and/or its entry is commented out, treat it as if set to 60000. (To minimize future confusion, you may wish to set it to 60000, now.)
      4. On the firewall, open TCP ports PortLow through PortHigh, inclusive. In other words, if PortLow = 5000 and PortHigh = 5500, open all TCP ports 5000 to 5500.
      5. On the firewall, open TCP port 60001 and UDP port 60001.
    5. If firewalls do not exist, determine whether multiple network cards have been installed in the machine containing the Broker and agents, or if this machine has multiple IP addresses. If multiple network cards (even if only one is active) or IP addresses exist, take the following action:
      1. Open the active Rulebook file (~/openlink/bin/oplrqb.ini by default) with a text editor.
      2. Locate the [Protocol TCP] section.
      3. Remove the leading semicolon (";") from the IPAddress entry, if present.
      4. Set IPAddress equal to the IP address at which the Broker and Agents should be found. For example:


        IPAddress = 192.168.123.234

      5. Save your changes and exit the file.
      6. Restart your Request Broker.
      7. Ensure that client DSNs specify that IP address or a fully qualified hostname (e.g., broker-host.example.com) which resolves to the same IP address.
      8. Test.

    Special Consideration for Request Brokers running on Windows NT or 2000 Workstation

    Applications making 6 (or more) connections in rapid succession to OpenLink Request Brokers running on Windows NT Workstation or Windows 2000 Workstation may receive RPC: Remote System error.

    This is due to the size of the backlog queue for TCP sockets and RPC on the host OS, upon which our Multi-Tier communications layer depends. On Windows NT Workstation and Windows 2000 Workstation, the maximum queue size is 5; on Windows Server (NT, 2000, and later), the queue size can be 200 (or more). The Broker's internal backlog queue was 8 through Release 4.0, and increased to 32 in Release 4.1, but due to the OS limitations, on Windows Workstations, the effective value remains 5. Unfortunately, there is no way to increase the maximum size of the Windows Workstation backlog queue.

    The following Microsoft Knowledgebase articles discuss this Winsock-specific phenomenon:

    As these articles state, applications targeting an OpenLink Request Broker on Windows Workstation may have to force a timeout to avoid exhausting the Winsock TCP stack's resources before their next connection request.

    Evidence

    • output of commands --
      • HP-UX


        for i in `lanscan -i | awk '{print $1}'` ; do ifconfig $i ; done

      • Windows


        ipconfig /all

      • Mac OS X, Linux, AIX, Solaris, other Unix-like OS


        ifconfig -a

      • All OS (including the above)


        netstat -na

    • DSN and Communications settings (from odbc.ini or Windows Registry)
    • Session Rulebook (oplrqb.ini)

    Referenced by...