Sun Java System Web Server 7.0 Performance Tuning, Sizing, and Scaling Guide

Configuration and Tuning

The following tuning settings are common to all the tests in this study. Individual studies may also have additional configuration and tuning information.

/etc/system tuning:

set rlim_fd_max=500000
set rlim_fd_cur=500000


set sq_max_size=0
set consistent_coloring=2
set autoup=60
set ip:ip_squeue_bind=0
set ip:ip_soft_rings_cnt=0
set ip:ip_squeue_fanout=1
set ip:ip_squeue_enter=3
set ip:ip_squeue_worker_wait=0

set segmap_percent=6
set bufhwm=32768
set maxphys=1048576
set maxpgio=128
set ufs:smallfile=6000000

*For ipge driver
set ipge:ipge_tx_ring_size=2048
set ipge:ipge_tx_syncq=1
set ipge:ipge_srv_fifo_depth=16000
set ipge:ipge_reclaim_pending=32
set ipge:ipge_bcopy_thresh=512
set ipge:ipge_dvma_thresh=1
set pcie:pcie_aer_ce_mask=0x1

*For e1000g driver
set pcie:pcie_aer_ce_mask = 0x1

TCP/IP tuning:

ndd -set /dev/tcp tcp_conn_req_max_q 102400
ndd -set /dev/tcp tcp_conn_req_max_q0 102400
ndd -set /dev/tcp tcp_max_buf 4194304
ndd -set /dev/tcp tcp_cwnd_max 2097152
ndd -set /dev/tcp tcp_recv_hiwat 400000
ndd -set /dev/tcp tcp_xmit_hiwat 400000

Network Configuration

Since the tests used multiple network interfaces, it was important to make sure that all the network interfaces were not going to the same core. Network interrupts were enabled on one strand and disabled on the remaining three strand of a core using the following script:


allpsr=`/usr/sbin/psrinfo | grep -v off-line | awk '{ print $1 }'`
  set $allpsr
  numpsr=$#
  while [ $numpsr -gt 0 ];
  do
      shift
      numpsr=`expr $numpsr - 1`
      tmp=1
      while [ $tmp -ne 4 ];
      do
          /usr/sbin/psradm -i $1
          shift
          numpsr=`expr $numpsr - 1`
          tmp=`expr $tmp + 1`
      done
  done

The following example shows psrinfo output before running the script:


# psrinfo | more
0       on-line   since 12/06/2006 14:28:34
1       on-line   since 12/06/2006 14:28:35
2       on-line   since 12/06/2006 14:28:35
3       on-line   since 12/06/2006 14:28:35
4       on-line   since 12/06/2006 14:28:35
5       on-line   since 12/06/2006 14:28:35
.................

The following example shows psrinfo output after running the script:


0       on-line   since 12/06/2006 14:28:34
1       no-intr   since 12/07/2006 09:17:04
2       no-intr   since 12/07/2006 09:17:04
3       no-intr   since 12/07/2006 09:17:04
4       on-line   since 12/06/2006 14:28:35
5       no-intr   since 12/07/2006 09:17:04
          .................

Web Server Tuning

The following table shows the tuning settings used for the Web Server.

Table 6–1 Web Server Tuning Settings

Component 

Default 

Tuned 

Access logging 

enabled=true

enabled=false

Thread pool 

min-threads=16

max-threads=128

stack-size=131072

queue-size=1024

min-threads=128

max-threads=200

stack-size=262144

queue-size=15000

HTTP listener  

Non-secure listener on port 80

listen-queue-size=128

Non-secure listener on port 80

Secure listener on port 443

listen-queue-size=15000

Keep alive 

enabled=true

threads=1

max-connections=200 timeout=30 sec

enabled=true

threads=2

max-connections=15000 timeout=180 sec

default-web.xml

JSP compilation turned on 

JSP compilation turned off 

The following table shows the SSL session cache tuning settings used for the SSL tests.

Table 6–2 SSL Session Cache Tuning Settings

Component 

Default 

SSL session cache 

enabled=true

max-entries=10000

max-ssl2-session-age=100

max-ssl3-tls-session-age=86400