• Print  |
  • Feedback  |

Knowledge Base


TS-762
Tips for Diagnosing a Problematic SAS/IntrNet Pool Service

 

Tips for Diagnosing a Problematic SAS/IntrNet Pool Service

 

Step 1:  Check that the SAS/IntrNet Load Manager process is configured, is running and was started using the -log option so that a log file is created. See the following reference for information about the Load Manager:

 

http://support.sas.com/onlinedoc/913/getDoc/en/dispatch.hlp/useload.htm

 

Step 2: Check the Pool service definition in the broker.cfg file. 

 

Application Broker configuration file directives are documented at the following url:

 

http://support.sas.com/onlinedoc/913/getDoc/en/dispatch.hlp/refconf.htm

 

The broker.cfg file must contain a Pool service definition and must correctly identify the server and port where the Load Manager is running, using either the LoadManager global directive or the ServiceLoadManager directive within the Pool service definition.  The Pool service definition must also identify the server where SAS is installed, the number of Application Servers to start, and the correct command to start SAS and the Application Servers.

 

Here is an example of a Pool service definition that will start up to 5 servers as needed. SAS and the Load Manager are installed on the same machine and Load Manager is running on port 5555:

 

For Windows

-----------

 

PoolService pool1

ServiceAdmin "[your-name]"

ServiceAdminMail "[your-email]@[your-site]"

    Server       your.winbox.com

    Port         5

IdleTimeout  30

FullDuplex   True

ServiceLoadManager your.winbox.com:5555

SasCommand "\"C:\\Program Files\\SAS\\SAS 9.1\\sas.exe\" +

\"C:\\Program Files\\SAS\\SAS 9.1\\intrnet\\pool1\\appstart.sas\" +

                  -rsasuser -noterminal -nolog -SYSPARM "

 

For Unix

--------

 

PoolService pool1

ServiceAdmin "[your-name]"

ServiceAdminMail "[your-email]@[your-site]"

    Server      your.unixbox.com

    Port        5

    IdleTimeout 30

FullDuplex  True

    ServiceLoadManager  your.unixbox.com:5555

    SasCommand "/usr/local/bin/SAS_9.1/sas /usr/local/bin/SAS_9.1/intrnet/pool1/appstart.sas +

-rsasuser -noterminal -nolog -SYSPARM "

 

 

 

 

Step 3:  Test the Pool service using a PING administrative program with the _DEBUG=2304 parameter added to trace the socket connection attempts.  For example,

  

http://your.web.server/cgi-bin/broker?_service=pool1&_program=ping&_debug=2304

 

Note the lines returned in the Web browser.  Save the browser output to a file on disk in case you need to send it to Technical Support.

 

If you see a line that starts with "Error connecting to loadmgr..." in the browser, then the Application Broker cannot connect to the Load Manager that is defined in the broker.cfg file for this service.  Check the server and/or port number that has been specified in the LoadManager or ServiceLoadManager directive to be certain it is correct. Also check to be sure there is tcp/ip connectivity between the machine where the Web server is running and the machine where the Load Manager (and SAS) is installed. You can use the ping command to test connectivity from a system prompt on the Web server machine:

 

prompt> ping your.unixbox.com 

 

If the output from _DEBUG=2304 contains a line that starts with "Load manager returned...", then the connection to the Load Manager was successful and you must check the Load Manager log file for messages that may have been logged when the Load Manager attempted to start the Application Server(s).

 

Step 4: Check the Load Manager log file. Information on how to interpret the Load Manager log can be found here:

 

http://support.sas.com/onlinedoc/913/getDoc/en/dispatch.hlp/logload.htm

 

Here is an excerpt from a Load Manager log file showing a successful Pool service startup:

 

Fri Mar 17 2006 15:56:05  GET STATE pool1 your.winbox.com

Fri Mar 17 2006 15:56:05  GET SERVER pool1 your.winbox.com:5 34

Fri Mar 17 2006 15:56:05  Waiting for: pool1 34

Fri Mar 17 2006 15:56:06  Starting pool1 on your.winbox.com  Pid: 2720    

Fri Mar 17 2006 15:56:06  Command: "C:\Program Files\SAS\SAS 9.1\sas.exe"                   "C:\Program Files\SAS Institute\intrnet\pool1\appstart.sas" -rsasuser -noterminal -nolog -SYSPARM "loadmgr=your.winbox.com:5555 serviceid=pool1:19 port=000000"

Fri Mar 17 2006 15:56:08  SET STATE pool1 your.winbox.com:2160 STARTED

Fri Mar 17 2006 15:56:08  Server Pid 2720 listening on port 2160

Fri Mar 17 2006 15:56:08  Returning: pool1 your.winbox.com:2160 34

Fri Mar 17 2006 15:56:08  SET STATE pool1 your.winbox.com:2160 BUSY 34 1/1 0 ping

Fri Mar 17 2006 15:56:08  SET STATE pool1 your.winbox.com:2160 IDLE 34 0/1 0

 

If the Load Manager log file contains messages that indicate "Server failed to start..." or "Waiter exited" after logging a "Starting..." message for the Pool service, then the following test may help determine why the server would not start.                                                                            

Modify the Pool service definition to designate only one server in the Port directive; specify either a single, specific port number over 256 or the number 1.  Also change the  -nolog option in the SasCommand directive to -log and specify a valid log file in a directory on the server like c:\temp (Windows) or /tmp (Unix) where permissions are open. For example,

For Windows

-----------

 

PoolService pool1

ServiceAdmin "[your-name]"

ServiceAdminMail "[your-email]@[your-site]"

    Server       your.winbox.com

    Port         1

IdleTimeout  30

FullDuplex   True

ServiceLoadManager your.winbox.com:5555

SasCommand "\"C:\\Program Files\\SAS\\SAS 9.1\\sas.exe\" +

\"C:\\Program Files\\SAS\\SAS 9.1\\intrnet\\pool1\\appstart.sas\" +

-rsasuser -noterminal -log c:\\temp\\appstart.log -SYSPARM "

 

For Unix

--------

 

PoolService pool1

ServiceAdmin "[your-name]"

ServiceAdminMail "[your-email]@[your-site]"

    Server      your.unixbox.com

    Port        1

    IdleTimeout 30

FullDuplex  True

ServiceLoadManager your.unixbox.com:5555

    SasCommand "/usr/local/bin/SAS_9.1/sas /usr/local/bin/SAS_9.1/intrnet/pool1/appstart.sas +

-rsasuser -noterminal -log /tmp/appstart.log -SYSPARM "                       

Then send a PING request to the Pool service, and check whether the log file specified in the SasCommand is produced.  If a log file is created there will likely be clues when the Pool service fails to start.           

   

  http://your.web.server/cgi-bin/broker?_service=Pool1&_program=ping&_debug=2304

 

 

Step 5:  If no log file is produced from the test in Step 4, then the most likely culprit is insufficient authorization for the account that Load Manager is started with to

 

a) start SAS

b) write to the WORK library

c) read or write to the SASUSER library

d) read the appstart.sas file or

e) write to the log file. 

 

You can modify the Pool service definition from Step 4 to test further by adding the -WORK and -SASUSER options to the SasCommand:

 

For Windows

-----------

 

    SasCommand   "\"C:\\Program Files\\SAS\\SAS 9.1\\sas.exe\" +

\"C:\\Program Files\\SAS\\SAS 9.1\\intrnet\\pool1\\appstart.sas\" +

-rsasuser -noterminal -work c:\\temp -sasuser c:\\temp -log c:\\temp\\appstart.log -SYSPARM "

 

For Unix

--------

 

    SasCommand "/usr/local/bin/SAS_9.1/sas /usr/local/bin/SAS_9.1/intrnet/pool1/appstart.sas +

-rsasuser -noterminal -work /tmp -sasuser /tmp -log /tmp/appstart.log -SYSPARM "   

 

Once this change is made in the broker.cfg file, ping the service again:

 

http://your.web.server/cgi-bin/broker?_service=Pool1&_program=ping&_debug=2304

 

                          

If the Pool service can be successfully pinged after making this change to the broker.cfg file, then you can surmise that there were insufficient permissions on the WORK and/or SASUSER library.  You can change the account that Load Manager starts under, change the paths in the SasCommand and/or change the paths in the sasv9.cfg file to resolve the permissions problem.                                                                            

 

Step 6:  If the Pool service *STILL* fails to start then

 

a) Test to see if you can start a Socket service instead of a Pool service.  Use the SAS/IntrNet Service Configuration Utility (inetcfg.exe on Windows and inetcfg.pl on Unix) to create a Socket service.  Instructions for creating a Socket service can be found here:

http://support.sas.com/91doc/getDoc/dispatch.hlp/defsvc.htm

 

 

b) Check SAS Notes for the specific error you receive. 

 

c) If you contact Technical Support please be prepared to provide the broker.cfg file, the Load Manager log  file, the appstart.log file from the tests above (if one is created), the appstart.sas file and the output from  a PING request with _DEBUG=2304 added.