SUPPORT / SAMPLES & SAS NOTES
 

Support

Problem Note 42547: SAS Remote Services start slowly or do not respond in UNIX operating environments

DetailsAboutRate It
In some cases, SAS Remote Services starts very slowly. In some environments, invocation can be so slow that you might think that the service is no longer responding.

When this problem occurs, some or all of the following events have been reported:

  • SAS Remote Services starts slowly.
  • SAS Remote Services does not respond or is stalled.
  • SAS Remote Services was not responding, but it starts after the process is killed.

This problem has occurred in some UNIX environments, particularly those with remote file systems. Any environment with slow I/O can exhibit this behavior.

Problem Origin

The SAS Remote Services script runs two Java programs:
  • PicklistMerger
  • RemoteServices

The PicklistMerger program uses Java to search the file system recursively for SAS configuration files, and this program must complete before RemoteServices can start. In some environments, this search can be very slow. This slow performance gives the appearance that RemoteServices is not responding when, in fact, RemoteServices has not even started yet. When you issue a UNIX kill command, the search is canceled and RemoteServices can start.

Solution

The PicklistManager scripts searches the file system using native Java libraries. This method is slow on some file systems. With a few changes to the RemoteServices.sh file, you can perform the searches directly in the operating environment. This method provides a noticeable improvement. To change the RemoteServices.sh file, do the following:

  1. Make a backup copy of your RemoteServices.sh script.

    For example, on a UNIX Level 1 system, the script is in the following location:



        .../Lev1/Web/Applications/RemoteServices/

    Make a backup copy by submitting the following command:

    cp RemoteServices.sh RemoteServices.orig.sh
  2. Update the secondary pick lists.

    Locate the following code block in the RemoteServices.sh file. (Be sure to replace SAS-release with the appropriate SAS release number (for example, 9.2.)

    SECONDARY_PICKLIST1=$SAS_HOME/**/jps.picklist
    SECONDARY_PICKLIST2=$SAS_HOME/SASPlatformObjectFramework/SAS-release/plugins/**/rmi/picklist

    Change the code block so that it appears as follows. (Be sure to replace SAS-release with the appropriate release number.)

    SECONDARY_PICKLIST1=`find $SAS_HOME -name jps.picklist | xargs` SECONDARY_PICKLIST2=`find $SAS_HOME/SASPlatformObjectFramework/SAS-release/ -name rmi -exec find {} -name picklist \; | xargs `
  3. Update the call to PicklistMerger.

    Locate the following code block:

    com.sas.framework.picklist.PicklistMerger \ -primary "$PRIMARY_PICKLIST" \ "$PICKLIST" \ "$SECONDARY_PICKLIST1" \ "$SECONDARY_PICKLIST2"

    Change this code by removing the double quotation marks from the secondary pick lists:

    com.sas.framework.picklist.PicklistMerger \ -primary "$PRIMARY_PICKLIST" \ "$PICKLIST" \ $SECONDARY_PICKLIST1 \ $SECONDARY_PICKLIST2
  4. Test the script.

    Test the script by starting SAS Remote Services with the following command:

    RemoteServices.sh start


Operating System and Release Information

Product FamilyProductSystemSAS Release
ReportedFixed*
SAS SystemSAS Enterprise BI Server64-bit Enabled AIX
64-bit Enabled HP-UX
64-bit Enabled Solaris
HP-UX IPF
Linux
Linux for x64
Linux on Itanium
Solaris for x64
* For software releases that are not yet generally available, the Fixed Release is the software release in which the problem is planned to be fixed.