Solution
1) Ensure that resource constraints set in the O/S configuration file /etc/system configure process hard limits to allow this:
* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
* v
* v Set the hard limit (rlim_fd_max) and
* v soft limit (rlim_fd_cur) to allow processes to maintain
* v more than 1024 open file descriptors concurrently:
*
set rlim_fd_max=2048
set rlim_fd_cur=1536
*
* NOTE: rlim_fd_cur provides the default "ulimit" value
* that can be displayed using "ulimit -n"
*
* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2) Check ulimit values executed from the command line environment from which "opmnctl" and "dcmctl"
commands are issued reflects a sufficiently high value for "nofiles(descriptors)":
% ulimit -a
time(seconds) unlimited
file(blocks) unlimited
data(kbytes) unlimited
stack(kbytes) unlimited
coredump(blocks) unlimited
nofiles(descriptors) 1536
vmemory(kbytes) unlimited
3) Test the working of the application to see if the error occurs again.
4) If the above does not work and still the errors are seen in the log files then make the following changes
a) Navigate to the directory containing the default "opmnctl" script and back this up:
% cd $ORACLE_HOME/opmn/bin/opmnctl
% cp opmnctl opmnctl.orig
b) Using a suitable editor, such as vi or emacs, edit the default "opmnctl" script and replace the following one line:
ulimit -n 1024
with the lines:
MAX_FILE_DES=`ulimit -n`
if [ "${MAX_FILE_DES}" -lt "1024" ]
then
ulimit -n 1024
fi
c) Save the changes back to the "opmnctl" file.
5) Even after making the above changse if the issue is still seen then add the following lines to the apachectl script.
ulimit -n 3000
LD_PRELOAD_32=/usr/lib/extendedFILE.so.1 ; export LD_PRELOAD_32
The above changes to the apachectl script is a feature available in Solaris 10.