Solaris Kernel Parameters for WebSphere v6.x Installation
By sunabl on Dec 08, 2007
This blog entry clarifies the Solaris kernel parameters required by IBM WebSphere Application Server v6.x. This IBM Info center document shows the following parameters needed as the recommended /etc/system entries:
set shmsys:shminfo_shmmax = 4294967295 set shmsys:shminfo_shmseg = 1024 set shmsys:shminfo_shmmni = 1024 set semsys:seminfo_semaem = 16384 set semsys:seminfo_semmni = 1024 set semsys:seminfo_semmap = 1026 set semsys:seminfo_semmns = 16384 set semsys:seminfo_semmsl = 100 set semsys:seminfo_semopm = 100 set semsys:seminfo_semmnu = 2048 set semsys:seminfo_semume = 256 set msgsys:msginfo_msgmap = 1026 set msgsys:msginfo_msgmax = 65535 set rlim_fd_cur=1024
Of all those parameters, the only one you really need for WAS v6.x is the file limit descriptiors:
Reason: Prior to WAS v6.x, you may be aware that IBM used WebSphere MQ (v5) as the embedded messaging engine, the JMS provider required by the J2EE specification. In WAS v6.x, IBM's new implementation for the default JMS provider is called Service Integration Bus (SIB). SIB does not require those SYS V IPC parameters except for the file descriptors limit.
In Solaris 10, two differences, which we have discussed in this whitepaper, from the previous Solaris versions you should note:
- Many default values are larger than before and some kernel parameters are obsolete.
- You can manage these parameters through the new resource management framework with /etc/project. By using /etc/project instead of /etc/system, you no longer need to reboot the system.
There are few ways you can set these kernel parameters at different level as follows.
- Set the necessary parameter(s) in your current shell session before you execute your application such as WAS. This will work for the current session only and will not persist for the next session.
# prctl -n process.max-file-descriptor -r -v 1024 $$
- Set the necessary parameter(s) for system wide in the /etc/project. You may not want to do this as you are increasing the default value(s) for the entire system.
# projmod -s -K 'process.max-file-descriptor=(privileged,1024,deny)' system
- Set the necessary parameter(s) for the root user in the /etc/project. This is for all processes owned by the root user.
# projmod -s -K 'process.max-file-descriptor=(privileged,1024,deny)' user.root
- Set the necessary parameter(s) for the WAS user, who runs the server processes, in the /etc/project. This is a "Best Practice" way to do since you are changing the default value(s) specifically to the WAS user based upon IBM's recommendation for the WebSphere processes.
# projadd user.wasuser # projmod -s -K 'process.max-file-descriptor=(privileged,1024,deny)' user.wasuser
Finally, if you are deploying WAS in Solaris Containers (Zones), you can set the kernel parameters zone wide with the zonecfg command as of Solaris 10 8/07 (Update 4). You can read this blog entry. There are many new features added to this Solaris release, you can even capped memory, etc. to a zone.