Oracle iPlanet Web Server 7.0.9 Troubleshooting Guide

Chapter 3 Startup and Access

My Server Fails to Start

When your server fails to start, consider the following cases:

  1. If you have configured Web Server to run on port 80, then you will need to start the server as 'root' user on Unix/Linux. However in Solaris 10, you don't need to run the Server as root to bind to port 80 (or < 1024). Execute the following commands:


    # su
    # /usr/sbin/usermod -K defaultpriv=basic,net_privaddr webservd
  2. When you encounter server startup issue, Server's error log or console output (on UNIX/Linux platforms) should most likely contain the reason for the startup failure.

  3. If the Web Server is configured to run in 64-bit and any of the plug-ins mentioned in the magnus.conf is of 32-bit, then Web Server 7.0 would fail to startup , throwing out error message like wrong ELF class: ELFCLASS32. Similarly, if you see an error message like wrong ELF class: ELFCLASS64 it means that 32-bit Web Server is trying to load a 64 bit NSAPI plugin or vice-versa.

  4. While starting up the Web Server, if you do not see the message info: CORE3274: successful server startup on UNIX/Linux platforms, then it is most likely that the server has startup issues.

  5. If you see the error message catastrophe ( 908): Server crash detected (signal SIGSEGV) in the server's error log file, this means that Web Server's daemon has detected a crash. Web Server crash during startup can happen because of various reasons including:

    • Any of the configured 3rd party NSAPI plug-ins is either not following NSAPI specification.

    • Improper Server Configuration.

  6. Web Server requires at least 512 MB of memory to operate optimally. If your system is running low on swap space then you might get error shown below:


    warning: CORE3283: stderr: Error occurred during initialization of VM
    warning: CORE3283: stderr: Could not reserve enough space for object heap
    catastrophe: CORE4005: Internal error: unable to create JVM
    failure: server initialization failed

    You will have to increase the swap space on your system. If you are running Web Server 7 under Solaris 10 zones, then you will need to increase the swap space within the global zone.


    Note –

    Refer to your operating system document on how to add/increase swap space.


On Unix Systems, Web Server Consumes Excessive Memory on Startup

When starting up on Unix systems, Web Server employs an auto-tuning algorithm to provide values for certain elements when they are not specified in server.xml. Because this algorithm is based on the system's file descriptor limit, auto-tuning can cause Web Server to consume an excessive amount of memory when the file descriptor limit is very high and the elements are not explicitly specified in server.xml.

On startup, Web Server interrogates the system for the file descriptor limit, and then it allocates or reserves file descriptors for these items:

  1. Web applications (80% of the descriptors)

  2. Daemon session threads' connections (an average of 4 descriptors per thread)

  3. JDBC pools

  4. Access log counts for all virtual servers

  5. Listener counts

  6. File cache (the max-open-files subelement of the file-cache element)

  7. Keep-alive connections (the max-connections subelement of the keep-alive element

  8. Thread pool queue (the queue-size subelement of the thread-pool element)

The last three of these items are optional in server.xml, and are assigned auto-tuned values if they are not explicitly specified in server.xml.

The auto-tuning algorithm takes the number of file descriptors remaining after items one through five above are subtracted, and partitions them out according to the following ratios:

Subelement 

max-open-files  :  max-connections  :  queue-size

File descriptor limit >= 1024 

       1        :         16        :      16    

File descriptor limit < 1024 

       1        :         16        :       8    

The fact that these ratios favor max-connections (and, to a lesser degree, queue-size), coupled with the fact that connections and queue members consume a considerable amount of memory, can give rise to excessive memory use on systems with a high file descriptor limit.

To avoid the excessive memory use, make sure to specify values for max-open-files, max-connections, and queue-size on systems that have a high file descriptor limit.

File Descriptor Issues

Under heavy load condition, Web Server may run out of file descriptors. In such cases you will get an error like the following:


[18/Dec/2005:20:01:03] failure ( 3014): HTTP3069: 
Error accepting connection (PR_PROC_DESC_TABLE_FULL_ERROR: file descriptor table full)

Increase the file descriptor limit either per process or per system and restart the system.

Linux limits the number of file descriptors that any one process may open; the default limits are 1024 per process. These limits can prevent optimum performance of Web Server. The open file limit is one of the limits that can be tuned with the ulimit command. The command ulimit -aS displays the current limit, and ulimit -aH displays the hard limit (above which the limit cannot be increased without tuning kernel parameters). For setting the limit to hard limit, execute the following command:


ulimit -n unlimited

java.lang.StackOverflowError when accessing JSP and/or Servlet

The default value for thread stack size is 128K for 32-bit server and 256K for 64-bit server. Depending on the web application, the server may require additional thread stack size to service a request. If you are seeing java.lang.StackOverflowError when servicing Java content, you should increase the thread stack size using the Administration Console or the wadm CLI utility. It is recommended that you increase the thread stack size in increments of 8K until the problem ceases to exist. For example, to set the thread stack size to the default +8K on a 64-bit server, execute the following command:


$wadm set-thread-pool-prop --user=admin --port=8989 
--password-file=passwordfile --config=config-name stack-size=270336

Performance Issues

See, Oracle iPlanet Web Server 7.0.9 Performance Tuning, Sizing, and Scaling Guide.

Getting Information From Running Processes

Web server 7.0 provides several ways to get more information on the running process, if your web server seems to hang or be little non responsive.

Find the running web server process:

  1. Linux — Run the /bin/ps -o "pid ppid comm args" | grep webservd | grep -v admin-server command. The output will look similar to the following text:


    424     1 webservd-wdog     webservd-wdog -d 
    		/var/opt/SUNWwbsvr7/https-chilidev1.red.iplanet.com/config -r
    425   424 webservd             webservd -d 
    		/var/opt/SUNWwbsvr7/https-chilidev1.red.iplanet.com/config -r /opt/
    426   425 webservd             webservd -d 
    		/var/opt/SUNWwbsvr7/https-chilidev1.red.iplanet.com/config -r /opt/

    pstack -p 426 (the last child PID) will return the web server stack information of the running process.

  2. Solaris — Run the /usr/bin/ps -o "pid ppid cmd args" | grep webservd | grep -v admin-server command. The output will look similar to the following text:


    424     1 webservd-wdog     webservd-wdog -d 
    		/var/opt/SUNWwbsvr7/https-chilidev1.red.iplanet.com/config -r
    425   424 webservd             webservd -d 
    		/var/opt/SUNWwbsvr7/https-chilidev1.red.iplanet.com/config -r /opt/
    426   425 webservd             webservd -d 
    		/var/opt/SUNWwbsvr7/https-chilidev1.red.iplanet.com/config -r /opt/

    pstack -p 426 (the last child PID) will return the web server stack information of the running process.

If you are running dynamic applications that uses JSPs/Servlets and you find that Web Server is becoming unresponsive during their execution, you can get Web Server to print the stack information within the log (logs/errors) by running the command kill -s QUIT 426 (last child PID).