## LiteSpeed Web Server
Users' Manual

### Version 6.3 — Rev. 4

- License Enterprise
- Introduction
- Installation
- Administration
- Security
- Configuration
  - Server General
  - Server Log
  - Server Tuning
  - Server Security
  - Page Cache
  - PageSpeed Config
  - External Apps
  - Fast CGI App
  - Fast CGI Authorizer
  - LSAPI App
  - Servlet Engine
  - Web Server
  - Piped logger
  - Load Balancer
  - Script Handler
  - PHP
  - App Server Settings
  - Listener General
  - Listener SSL
  - Virtual Host Templates
  - Virtual Host Basic
  - Virtual Host General
  - Virtual Host Security
  - Virtual Host SSL
  - Virtual Host PageSpeed Config
  - Rewrite
  - Context
  - Static Context
  - Java Web App Context
  - Servlet Context
  - Fast CGI Context
  - LSAPI Context
  - Proxy Context
  - CGI Context
  - Load Balancer Context
  - Redirect Context
  - App Server Context
  - Rack/Rails Context
  - Add-ons
- Web Console
  - Admin Console General
  - Admin Console Security
  - Admin Listener General
  - Admin Listener SSL

# App Server Settings

## Table of Contents

### Rack/Rails Default Settings⇑

#### Description

Default configurations for Rack/Rails applications. These settings can be overriden at the context level.

### Ruby Path⇑

#### Description

Path to Ruby executable. Generally, it is /usr/bin/ruby or /usr/local/bin/ruby depending on where Ruby has been installed to.

#### Syntax

Absolute path

### Run-Time Mode⇑

#### Description

Specifies which mode the application will be running as: "Development", "Production", or "Staging". The default is "Production".

#### Syntax

Select from drop down list

### Max Connections⇑

#### Description

Specifies the maximum number of concurrent connections that can be established between the server and an external application. This setting controls how many requests can be processed concurrently by an external application, however, the real limit also depends on the external application itself. Setting this value higher will not help if the external application is not fast enough or cannot scale to a large number of concurrent requests.

#### Syntax

Integer number

#### Tips

Setting a high value does not directly translate to higher performance. Setting the limit to a value that will not overload the external application will provide the best performance/throughput.

### Environment⇑

#### Description

Specifies extra environment variables for the external application.

#### Syntax

Key=value. Multiple variables can be separated by "ENTER"

### Initial Request Timeout (secs)⇑

#### Description

Specifies the maximum time in seconds the server will wait for the external application to respond to the first request over a new established connection. If the server does not receive any data from the external application within this timeout limit, it will mark this connection as bad. This helps to identify communication problems with external applications as quickly as possible. If some requests take longer to process, increase this limit to avoid 503 error messages.

#### Syntax

Integer number

### Retry Timeout (secs)⇑

#### Description

Specifies the period of time that the server waits before retrying an external application that had a prior communication problem.

#### Syntax

Integer number

### Connection Keepalive Timeout⇑

#### Description

Specifies the maximum time in seconds to keep an idle persistent connection open.
When set to "-1", the connection will never timeout. When set to 0 or greater, the connection will be closed after this time in seconds has passed.

#### Syntax

int

### Response Buffering⇑

#### Description

Specifies whether to buffer responses received from external applications. If a "nph-" (Non-Parsed-Header) script is detected, buffering is turned off for responses with full HTTP headers.

#### Syntax

Select from drop down list

### Max Idle Time⇑

#### Description

Specifies the maximum idle time before an external application is stopped by the server, freeing idle resources. When set to "-1", the external application will not be stopped by the server unless running in ProcessGroup mode where idle external applications will be stopped after 30 seconds.
Default value: -1{/val}

#### Syntax

Integer number

#### Tips

This feature is especially useful in the mass hosting environment where, in order to prevent files owned by one virtual host from being accessed by the external application scripts of another virtual host, many different applications are run at the same time in SetUID mode. Set this value low to prevent these external applications from idling unnecessarily.

### Back Log⇑

#### Description

Specifies the backlog of the listening socket. Required if Start By Server is enabled.

#### Syntax

Integer number

### Run On Start Up⇑

#### Description

Specifies whether to start the external application at server start up. Only applicable to external applications that can manage their own child processes and where Instances value is set to "1".
If enabled, external processes will be created at server startup instead of run-time.
When selecting "Yes (Detached mode)", all detached process can be restarted at the Server level or Virtual Host level by touching the '.lsphp_restart.txt' file under the $SERVER_ROOT/admin/tmp/ or $VH_ROOT/ directory respectively.
Default value: Yes (Detached mode)

#### Syntax

Select from radio box

#### Tips

If the configured external process has significant startup overhead, like a Rails app, then this option should be enabled to decrease first page response time.

### Priority⇑

#### Description

Specifies priority of the external application process. Value ranges from -20 to 20. A lower number means a higher priority. An external application process cannot have a higher priority than the web server. If this priority is set to a lower number than the server's, the server's priority will be used for this value.

#### Syntax

int

#### See Also

Server Priority

### Memory Soft Limit (bytes)⇑

#### Description

Specifies the memory consumption limit in bytes for an external application process or an external application started by the server.
The main purpose of this limit is to prevent excessive memory usage because of software bugs or intentional attacks, not to impose a limit on normal usage. Make sure to leave enough head room, otherwise your application may fail and 503 error may be returned. It can be set at the server- level or at an individual external application level. The server-level limit will be used if it is not set at the individual application level.
The operating system's default setting will be used if the value is absent at both levels or set to 0.

#### Syntax

Integer number

#### Tips

Do not over adjust this limit. This may result in 503 errors if your application needs more memory.

### Memory Hard Limit (bytes)⇑

#### Description

Much the same as Memory Soft Limit (bytes), except the soft limit can be raised up to the hard limit from within a user process. The hard limit can be set at server level or at an individual external application level. The server-level limit will be used if it is not set at an individual application level.
The operating system's default will be used if the value is absent at both levels or set to 0.

#### Syntax

Integer number

#### Tips

Do not over adjust this limit. This may result in 503 errors if your application need more memory.

### Process Soft Limit⇑

#### Description

Limits the total number of processes that can be created on behalf of a user. All existing processes will be counted against this limit, not just new processes to be started.
The limit can be set at the server level or at an individual external application level. The server-level limit will be used if it is not set at an individual application level. The operating system's default setting will be used if this value is 0 or absent at both levels.

#### Syntax

Integer number

#### Tips

To control how many processes LSWS will make for users in mod_suEXEC mode, use the suEXEC Max Conn setting. PHP scripts can call for forking processes and the number of processes needed for normal functioning can be above the suEXEC Max Conn setting. The main purpose of this limit is as a last line of defense to prevent fork bombs and other attacks caused by PHP processes creating other processes.
Setting this setting too low can severely hurt functionality. The setting will thus be ignored below certain levels.
When Run On Start Up is set to "Yes (Daemon mode)", the actual process limit will be higher than this setting to make sure parent processes are not limited.

### Process Hard Limit⇑

#### Description

Much the same as Process Soft Limit, except the soft limit can be raised up to the hard limit from within a user process. The hard limit can be set at the server level or at an individual external application level. The server-level limit will be used if it is not set at an individual application level. The operating system's default value will be used if the value is absent at both levels or set to 0.

#### Syntax

Integer number

### Rack/Rails Shared Hosting⇑

#### Description

LiteSpeed's Rack/Rails Shared Hosting settings allow users using our high performance, highly scalable Ruby LSAPI module to easily control their customers' Ruby usage.
LiteSpeed Rack/Rails hosting solution can deliver the best performance with minimum server resource requirement. In addition, it is compatible with all existing web hosting control panels.
The user-manageable Rack/Rails configuration file (".ls_rails_config") is located in the user's home directory or virtual host root directory. Syntax is as follows:

> #RailsApp
> RailsApp testApp "/lsws/testrails" "development" 4 1
> #RailsAppMap
> RailsAppMap testApp "testrails.com" "/"
> RailsAppMap testApp "test.testrails.com" "/"

The "App Path" is relative to the user's home directory or the virtual host root directory.
Whenever this file is touched, Rack/Rails applications will be restarted.

### Enable Shared Hosting⇑

#### Description

Specifies whether to enable Rack/Rails shared hosting. The default is "Disabled".

#### Syntax

Select from radio box

### Max Apps Per Account⇑

#### Description

Specifies the maximum number of Rack/Rails applications that can be created per account. The default is "1".

#### Syntax

Integer number

#### Tips

Rack/Rails applications can take a large amount of system resources. Thus it is not recommended to set this limit too high, otherwise it may affect the performance of whole server if one user abuses it.

### Max Ruby Processes Per Account⇑

#### Description

Specifies the maximum number of Ruby processes that can be created per account. The default is "10". If one account runs multiple Rack/Rails applications, the total number of Ruby processes of all applications cannot exceed this limit. Each ruby process will take large amount of system resource, it is not recommended to set a high limit, otherwise, it will affect the performance of whole server if one user abuse it.

#### Syntax

Integer number

#### Tips

Ruby processes can take a large amount of system resources. Thus it is not recommended to set this limit too high, otherwise it may affect the performance of the whole server if one user abuses it.

### Python WSGI Default Settings⇑

#### Description

Default configurations for Python WSGI applications. These settings can be overriden at the context level.

### WSGI Path⇑

#### Description

Path to LiteSpeed Python Web Server Gateway Interface executable (lswsgi).
This executable is created by compiling Python with LiteSpeed's WSGI LSAPI module.

#### Syntax

Absolute path

### Node.js App Default Settings⇑

#### Description

Default configurations for Node.js applications. These settings can be overriden at the context level.

### Node Path⇑

#### Description

Path to Node.js executable.

#### Syntax

Absolute path