1 Reply Latest reply on Sep 29, 2014 2:56 PM by stevepiette

    transport_tcp_maximum_ports setting

    New Member

      Hi there,

       

      We are using UMP 6.5 , we found that some of our applications failed to run recently due to the following error.

       

         2014-09-24 01:13:22.767 ERROR [140329022285568:Inject] - <hsbc.atlas.transport.TransportPlugin> TransportPlugin failed to initialize

      hsbc.atlas.transport.exception.AltasTransportException: Fail to create LBTRU transport

        at hsbc.atlas.transport.umq.LBMResource.start(LBMResource.java:75)

        at hsbc.atlas.transport.umq.LBMResourceManager.start(LBMResourceManager.java:49)

        at hsbc.atlas.transport.umq.LBMServiceManager.start(LBMServiceManager.java:32)

        at hsbc.atlas.transport.TransportServiceManager.getService(TransportServiceManager.java:10)

        at hsbc.atlas.transport.disruptor.OrderResponseEventHandler.<init>(OrderResponseEventHandler.java:20)

        at hsbc.atlas.transport.TransportPlugin.<clinit>(TransportPlugin.java:30)

      Caused by: com.latencybusters.lbm.LBMEOPException: CoreApi-5688-3230: could not find open TCP server port in range [19601-20000]

        at com.latencybusters.lbm.LBMContext.lbmContextCreate(Native Method)

        at com.latencybusters.lbm.LBMContext.<init>(LBMContext.java:246)

        at hsbc.atlas.transport.umq.LBMResource.start(LBMResource.java:67)

        ... 5 more

       

       

      It was found that issue was caused by some apps believed to be running with different application context (as it use different 29west dependent client application library) and 29West is using a simple round-robin algorithm to allocate transport ports to sources (topics).

       

       

      From the UMP 6.5 configuration guide, we found the parameter "transport_tcp_maximum_ports" that may be able to resolve our issue. It looks to us that the parameter can force the max number port usage to a specific number (e.g. 10). But would it has any side impact like performance degrade etc ? Would you please explain a bit how the parameter work ?

       

      "Creation of a UMS source on a TCP transport will allocate an unused port from the range if less than

      “ transport_tcp_maximum_ports (context) ” on page 90 ports have already been allocated. Setting

      “ transport_tcp_maximum_ports (context) ” on page 90 to a fraction of the range allows the corresponding multiple

      number of UMS processes to share a common configuration."

       

       

      Thanks and Regards,

      Tim

        • 1. Re: transport_tcp_maximum_ports setting
          New Member

          Tim,

           

          Please open support cases for the issues like this so you can receive timely answers.

           

          Why do you require so many transport sessions (400)?

           

          The context option "transport_tcp_maximum_ports" set the maximum number of TCP transports the context can create. By default the value is 10 allocated from the range set by the context options "transport_tcp_port_low" and transport_tcp_port_high" (14371-14390 or 20 ports).


          By default, UM will map source topics to transports round robin using these transport settings, so the first 10 TCP source topics created in the context are assigned to unique transports and starting with the 11th wrap back to the first transport. If you don't have 10 sources then each topic will receive it's own transport. (5 is the default for RU and RM)


          If multiple contexts share the same configuration file then the grand total of all TCP transports across all contexts on a machine must be in the range transport_tcp_port_low to transport_tcp_port_high or you will receive the error "CoreApi-5688-3230: could not find open TCP server port in range [14371-14390]".


          Please note that the error message from your application is claiming that the transport failing is LBTRU not TCP.

          "hsbc.atlas.transport.exception.AltasTransportException: Fail to create LBTRU transport".


          In the case of running out of ports for RU you will receive "CoreApi-5688-3301: could not find open unicast port in range [14390-14391] for bidir". The LBTRU context options work like the TCP ones, "transport_lbtru_maximum_ports" from the range of "transport_lbtru_port_low" to "transport_lbtru_port_high"


          Regards,