Problem Note 42547: SAS Remote Services start slowly or do not respond in UNIX operating environments
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:
- 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
- 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 `
- 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
- Test the script.
Test the script by starting SAS Remote Services with the following command:
RemoteServices.sh start
Operating System and Release Information
SAS System | SAS Enterprise BI Server | 64-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.
Type: | Problem Note |
Priority: | medium |
Date Modified: | 2012-07-23 14:42:01 |
Date Created: | 2011-02-28 16:29:26 |