== link:index.html[Index] -> link:config.html[Configuration]
////
Last checked: 2010/04/26 Cherokee 0.99.46b
////

Advanced Configuration
----------------------

Through this section you can fine-tune several of Cherokee's
parameters. You should not attempt to do so unless you really know
what you are doing. For most cases the default parameters will work
just fine.

.Warning
image::media/images/admin_advanced0.png[Cherokee Admin interface]

You should at least read the chapter
link:cookbook_optimizations.html[Optimizing Cherokee] before you
start tweaking things here.

[[connections]]
Connections
~~~~~~~~~~~
* KeepAlive:
  Enables the global keep-alive support for the client requests. It
  increases the client performance by reusing a connection for more
  than one request. It should most probably be turned on.

* Max keepalive reqs:
  This limits the number of HTTP requests that can be served by each
  keepalive connection. Keepalive connections improve performance, but
  surpassing certain amount of requests per each connection is an
  indicator that something out of the ordinary is happening. This
  prevents the appearance of any problems related to these situations.

* Chunked encoding:
  Enabled by default to try to keep enabled Keep-Alive.

* Polling Method: This affects the internal file descriptor polling
  method among the ones supported by the OS. The full list of options
  is `epoll()`, `kqueue`, `poll()`, `Solaris ports`, `select()` and
  `Win32`. Only the alternatives available for your specific
  architectures are shown. If you don't know what this is or how this
  affects performance, just choose `Automatic`. This will choose the
  most efficient one among the present at any given time.

* Sendfile min/max size:
  These allow to configure the range of file sizes that can be sent
  with `sendfile()`. Default: [32768 Bytes - 2 GB].

.Connections
image::media/images/admin_advanced1.png[Cherokee Admin interface]

[[resources]]
Resources
~~~~~~~~~
* Thread Number:
  Adjust the number of threads for Cherokee to work with. Increasing
  this will allow for better parallelization at the cost of system
  resources. Highly constrained environments such as embedded devices
  will probably be fine with just one. This doesn't translate into
  just one connection at the time, since a thread can handle many.

* Thread Policy:
  Defines the thread policy to be applied by the OS: FIFO, Round Robin
  or Dynamic.

* File descriptors:
  This can alter the number of file descriptors handled by the server
  should handle. The default value is what `ulimit -n` reports. An
  increase in this value improves performance under very high server load.

* Listening queue length: This specifies the size of the incoming
  connection queue. It is the effective buffer of connections that
  will be served even if there are no connection slots available at
  the moment.

* Reuse connections:
  Cherokee implements an intelligent mechanism to reuse connections if
  possible, allowing it to improve performance by not having to
  reinitialize structures in memory that can serve perfectly well for
  more than one time. It defaults to 20. Though this mechanism is an obvious
  improvement, reducing this limit is useful for cases when a sudden
  burst of connections happens. In those cases it doesn't make much
  sense to keep reusing many more connections than those of an average
  load for any other moment.

* Log flush time:
  Time interval in seconds to wait between log updates. Defaults to 10
  seconds.

* Nonces clean up time:
  Time interval in seconds between Nonce cache clean ups. Defaults to
  60 seconds.

.Resources
image::media/images/admin_advanced2.png[Cherokee Admin interface]

[[io_cache]]
I/O cache
~~~~~~~~~
* Status:
  Enabled by default. This is a system-wide setting required if you
  wish to enable caching in any of your virtual hosts. Useful for debugging.

* Max pages:
  This specifies the maximum number of pages that are handled by the cache.

* File Min Size:
  Specifies the smallest filesize limit to be cached.

* File Max Size:
  Specifies the biggest filesize limit to be cached.

* Lasting _stat_:
  Specifies the duration of the file information in the cache without
  refreshing.

* Lasting _mmap_:
  Specifies how long the file contents last cached.

.IO/Cache
image::media/images/admin_advanced3.png[Cherokee Admin interface]

[[special_files]]
Special Files
~~~~~~~~~~~~~
* Panic action:
  This specifies the program that will be called in case the server
  fails. It defaults to `cherokee-panic`, which is provided with
  Cherokee. This in turn performs the actions specified in the
  `CHEROKEE_PANIC_OUTPUT` environment variable. If none is set, it will
  attempt to send an email to the system administrator with a
  backtrace of what happened. As a last resort, if no mailer is
  available in the system, it will simply try to show this information
  on screen if possible.

* PID file:
  If specified, a PID file will be created in that path. This is
  useful to trace what is going on with Cherokee.

.Special files
image::media/images/admin_advanced4.png[Cherokee Admin interface]

[[tls]]
TLS
~~~
* DH parameters:
  Here you can specify the paths to your Diffie Hellman parameters PEM
  files for 512, 1024, 2048 and 4096 bits.

.TLS
image::media/images/admin_advanced5.png[Cherokee Admin interface]
