About Accoria
Rock Web Server
Rock Load Balancer
DownLoad
Prices
Purchase
User Guides
Contact Us
Web Benchmarks
Web Server User Guide

Prev   Next   Index

21. Web Benchmark with Rock Web Server

SPECweb2005 benchmark results with Rock Web Server can be found at www.spec.org.

21.1 Worker Thread Configuration

For explicit worker thread configuration, see worker thread configuration. On Windows platform, explicit worker thread configuration is usually not needed for peak performance, see worker thread configuration on Windows.

21.2 SPECweb2005 Configuration Directives

The following table lists the configuration directives that may be used for running SPECweb2005 benchmarks.

Directive NameDescription
accept_maxIt configures the maximum number of client connections to be accepted at one time.
admin_addressIt configures the command-line-based web administrative server.
cache_file_countIt configures the estimated number of static files that will be stored in the cache manager.
cache_memory_sizeIt configures the memory size for the cache manager.
cache_target_hit_rateIt configures the target hit rate for the cache manager.
connection_maxIt configures the maximum number of client connections.
connection_timeoutIt configures the longest inactivity time in seconds for a connection.
direct_ioIt configures whether direct IO should be enabled to serve IO requests outside the cache manager.
disk_worker_count_maxIt configures the upper bound of the disk IO thread pool size.
disk_worker_count_minIt configures the lower bound of the disk IO thread pool size.
disk_worker_sharedIt configures whether the disk IO thread pool should be shared among all httpd worker threads or on a per-worker basis.
do_aioIt configures whether AIO should be enabled to serve IO requests outside the cache manager. Supported on Solaris only.
aio_posix_apiIt configures whether to use POSIX AIO or KAIO. Supported on Solaris only.
header_etag_onIt configures whether the Etag header should appear in reply.
header_server_onIt configures whether the Server header should appear in reply.
java_connection_per_workerIt configures the number of TCP connections between each httpd worker thread abd the Rock JSP/Servlet Container.
jrock_configIt configures the Rock JSP/Servlet Container configuration file.
jrock_homeIt configures the Rock JSP/Servlet Container home installation directory.
keepalive_maxIt configures the maximum of client requests allowed on a connection.
log_buf_sizeIt configures the buffer size for access log.
read_buf_sizeIt configures the non-cached buffer size for disk IO requests.
read_buf_size_cacheIt configures the cache buffer size for disk IO requests.
send_fileIt configures whether the sendfile-like system call should be enabled to serve IO requests outside the cache manager.
send_file_min_sizeIt configures the smallest file for enabling send_file.
server_log/td>It configures the httpd server log.
ssl_session_maxIt configures the maximum number of concurrent SSL sessions. It is declared inside a secure web server instance.
tcp_send_buf_sizeIt configures the TCP send buffer size for client connections.
use_acceptorIt configures whether dedicated threads should be used for accepting client connections.
validate_httpmodIt configures the modification checking time for static files.
validate_staticIt configures the modification checking time for HTTP modules.
workerIt configures explicit httpd worker threads.
worker_countIt configures the number of httpd worker threads; it has effect only if the directive worker is not used.
worker_sched_priorityIt configures the scheduling priority for httpd worker threads.

21.3 HTTPD Configuration File

The following httpd configuration file works for all three workloads of SPECweb2005 benchmarks.

# Directives and tunables in this section should work well for machines with all configurations
server_log              httpd.log
validate_static         360000
validate_httpmod        -1
header_etag_on          0
header_server_on        0
log_buf_size            1048576
tcp_send_buf_size       1048576
keepalive_max           -1
connection_timeout      9600
admin_address           */8000

direct_io               1

# Explicit worker thread configuration depends on system configurations such as the numbers of CPUs
# and network cards. See SPECweb2005 publications for details.

# connection_max configures the maximum number of client connections. If the number of user sessions
# is N, a good value for connection_max is (2.5 * N). The value can be smaller if multiple web server
# processes are used. The system file descriptor limit should be bigger than the value of connection_max
# If the system file descriptor limit is too low, the httpd program counter out_of_descriptor will be
# positive. If the value of connection_max is too small, the counter out_of_connection will be positive.
connection_max          204800

# Cache manager configuration 1
cache_replacement	random
cache_memory_size	8192

# Cache manager configuration 2
# Loading files into the cache manager is disabled after cache hit rate reaches 98%.
cache_replacement       random
cache_memory_size       8192
cache_target_hit_rate   98

# Cache manager configuration 3
# Loading files into the cache manager is disabled after cache hit rate reaches 98%. Sendfile is used
# for static files processed outside the cache manager.
cache_replacement       random
cache_memory_size       8192
cache_target_hit_rate   98
send_file               1

# Cache manager configuration 4
# Loading files into ther cache manager is disabled if either the number of files in the cache manager
# reaches 27179 (default value for cache_file_count) or the cache manager memory usage reaches 8192MB
# Sendfile is used for static files processed outside the cache manager.
cache_replacement       none
cache_memory_size       8192
send_file		1

# Disk IO thread pool configuration
#
# A few examples are given below for disk IO thread pool configuration. Disk IO request statistics
# is available from the command-line administrative server. To do that, run cliadmin under httpd/bin
#
# cliadmin server-name 8000  see admin_server above
# Type "queue 60" at command prompt. It outputs realtime data for 60 seconds.

# Disk IO thread pool configuration 1.
# This configuration configures no thread pool, all IO requests are served by short-live dynamic threads.
disk_worker_count_min   0
disk_worker_count_max   0

# Disk IO thread pool configuration 2
# This configuration configures one thread pool with the fixed pool size 128.
disk_worker_count_min   128
disk_worker_count_max   128

# Disk IO thread pool configuration 3
# This configuration configures one thread pool, with the pool size between 64 and 128.
disk_worker_count_min   64
disk_worker_count_max   128

# Disk IO thread pool configuration 4
# Suppose that the number of httpd worker threads is 8. This configuration configures 8 thread pools
# with the pool size between 8 and 16.
disk_worker_count_min	64
disk_worker_count_max	128
disk_worker_shared	1

# Disk IO thread pool configuration 5
# Both disk_worker_count_min and disk_worker_count_max are not configured. Each httpd worker thread
# has associated disk IO thread pool with the pool size 8.

# Configure JRock location. Pass Java runtime options to shell environment JAVA_OPTS before start
# the web server process See SPECweb2005 publication for JAVA_OPTS.
jrock_home              /usr/jrock
jrock_config            specweb2005.xml

# web server instance on port 80 is not needed for banking workload.
#
# Under high load, the number of write IO requests to the access log file can be very big, so make sure
# the file system for the access log is able to handle the number of IOs.

<host>                  server:80
    document_root       /www
    access_log          access80.log
    error_log           error80.log
    access_log_format   commonlog_binary

    <file>              /
        cgi_type        internal_java
        cgi_regex       .*jsp
        cgi_listener    localhost/8080
    </file>
</host>

# web server instance on port 443 is not need for support workload.
<host>                  server:443
    document_root       /www
    ssl_key_file        ssl.key
    ssl_cert_file       ssl.cer

    # increase value for ssl_session_max when necessary. If the value of ssl_session_max is too small
    # the httpd program counter ssl_session_reclaim will have a positive value.
    ssl_session_max     79951
    access_log          access443.log
    error_log           error443.log
    access_log_format   commonlog_binary

    <file>              /
        cgi_type        internal_java
        cgi_regex       .*jsp
        cgi_listener    localhost/8080
    </file>
</host>

21.4 JSP Container Configuration

A sample container configuration for the banking workload is given below.

server_log              server.log
listener                8080
keepalive_max           0
connection_timeout      0

<application>
    docroot             /www/bank
    context_path        /bank
    session_timeout     600
</application>

21.5 BESIM Configuration

Below is a sample BESIM configuration file. There is no explicit worker thread configuration. The number of worker threads is the same as the number of online CPUs.

server_log              httpd.log
validate_static         360000
validate_httpmod        -1
keepalive_max           -1
header_etag_on          0
header_server_on        0
log_buf_size            1048576
tcp_send_buf_size       1048576
connection_timeout      360000

# JSP container maintains keep-alive connections to BESIM web server. Explicit worker thread configuration
# is not needed for peak performance. Distributing load evently among httpd worker threads helps performance
# This can be achieved with the tunable accept_max or use_acceptor. Eabling use_acceptor makes sure client
# connections from JSP container are evenly distributed among httpd worker threads.
use_acceptor            1

# or
# accept_max            1

# If httpmod_scheduler takes the default value 4, every BESIM request is processed by a short-live dynamic thread
# If it takes the value 0, every BESIM request is processed by a httpd worker thread.
httpmod_scheduler       0

<host>			besim:80
    document_root       /usr/httpd/etc/specweb05
    access_log          access.log
    error_log           error.log
    access_log_format   commonlog_binary

    <file>		/
        cgi_type        isapi
        cgi_where       internal
    </file>
</host>

Prev   Next   Index

Copyright 2009 by Accoria Networks, Inc. All Rights Reserved. Terms and Conditions