Optimizing the Solaris Network Cache and Accelerator for the Apache Web Server
I met an old friend whom was complaining that one of his Solaris servers at work which run the Apache web server is very slow. He has added RAM and migrated from RAID-5 to RAID-0 to improve disk I/O but the problem still persists. He asked me if I have any tips to offer as I had some Solaris experience several years ago.Googling on my personal file-server, I saw a tip I kept since year 2004. Since it could be useful to more people, I decided to share it on my blog.
Note: This tip offers an optimized configuration for dedicated web servers running Apache Web Server on a Solaris Operating System. This document is a brief how-to on configuring and optimizing the Solaris Network Cache and Accelerator (SNCA).
Requirements
- Solaris 2.8 OS
- 256MB RAM
- Apache Web Server 1.3.x
Necessary Packages for the Solaris OS
32 bits:
SUNWncar
SUNWncau
64 bits:
SUNWncarx
SUNWncaux
1. As a start, edit the file /etc/nca/ncakmod.conf
and configure the following parameters:
status=enabled
httpd_door_path=/var/run/nca_httpd_1.door
ncad_status=enabled
nca_active=disabled
2. Configure the log file used by SNCA:
Edit the file /etc/nca/ncalogd.conf
and configure the following parameters:
status=enabled // enabled /disabled
logd_path_name="/var/nca/log" // log file
logd_file_size=1000000 // Maximum file size
Create the log file:
$touch /var/nca/ncalogd.conf
3. Configure the network interfaces to work with SNCA:
Edit the file /etc/nca/nca.if
:
Add the name of the interfaces, e.g.: hme0
or hme0:1
or * (for all interfaces)
Each interface must have its corresponding file hostname.interface-name
inside /etc/
and the corresponding host line in the file /etc/hosts
.
4. Verify that the following startup files exist and are enabled:
/etc/rc2.d/S42ncakmod
/etc/rc2.d/S94ncalogd
5. Verify that the line "nca (number)" exists inside the file /etc/name_to_major
.
6. Optimizations for maximum performance:
Edit the file /etc/system
and add in the end:
* Tuning NCA for 3GB of memory
set sq_max_size=0
set ge:ge_intr_mode=1
set nca:nca_conn_hash_size=82500 // Size of hash table
set nca:nca_conn_req_max_q=100000 // Maximum number of pending connections
set nca:nca_conn_req_max_q0=100000 // Maximum number of pending incomplete connections
set nca:nca_ppmax=290000 // Amount available of memory to use by SNCA (pags)
set nca:nca_vpmax=290000 // Amount available of virtual memory to use by SNCA
7. Restart the system with reconfigure
option:
# reboot -- -r
8. Changes in Apache Web Server:
Edit the file /apache/conf/httpd.conf
:
KeepAlive Off
Comment the following parameters:
#Timeout
#MaxKeepAliveRequests
#KeepAliveTimeout
Edit the file /apache/bin/apachectl
and include:
# Enable NCA:
NCAKMODCONF=/etc/nca/ncakmod.conf
if [ -f $NCAKMODCONF ]; then
. $NCAKMODCONF
if [ "x$status" = "xenabled" ]; then
HTTPD="env LD_PRELOAD=/usr/lib/ncad_addr.so $HTTPD"
fi
fi
9. Restart Apache Web Server:
/apache/bin/apachectl restart
10. To view the log file:
#ncab2clf -D -i /var/nca/log
That's all :)
Comments