Fast CGI App
Table of Contents
Name | Address | Max Connections | Environment | Initial Request Timeout (secs) | Retry Timeout (secs) | Persistent Connection | Connection Keepalive Timeout | Response Buffering | Start By Server | Command | Back Log | Instances | Run As User | Run As Group | umask | Run On Start Up | Max Idle Time | Priority | Memory Soft Limit (bytes) | Memory Hard Limit (bytes) | Process Soft Limit | Process Hard Limit
Name⇑
Description
A unique name for this external application. You will refer to it by this name when you use it in other parts of the configuration.
Address⇑
Description
A unique socket address used by the external application. IPv4/IPv6 sockets and Unix Domain Sockets (UDS) are supported. IPv4/IPv6 sockets can be used for communication over the network. UDS can only be used when the external application resides on the same machine as the server.
Syntax
IPv4 or IPV6 address:port or UDS://path
Example
UDS://tmp/lshttpd/php.sock.
Tips
If the external application runs on the same machine, UDS is preferred. If you have to use an IPv4|IPV6 socket, set the IP address to localhost or 127.0.0.1, so the external application is inaccessible from other machines.
Unix Domain Sockets generally provide higher performance than IPv4 sockets.
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
Persistent Connection⇑
Description
Specifies whether to keep the connection open after a request has been processed. Persistent connections can increase performance, but some FastCGI external applications do not support persistent connections fully. The default is "On".
Syntax
Select from radio box
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
Start By Server⇑
Description
Specifies whether you want the web server to start the application automatically. Only FastCGI and LSAPI applications running on the same machine can be started automatically. The IP in the Address must be a local IP. Starting through the LiteSpeed CGI Daemon instead of a main server process will help reduce system overhead. CGI Daemon Async mode (non-blocking event-driven method) is recommended for servers with high I/O wait.
Default value: Yes (Through CGI Daemon Async)
Syntax
Select from drop down list
Command⇑
Description
Specifies the full command line including parameters to execute the external application. Required value if Start By Server is enabled. A parameter should be quoted with a double or single quote if the parameter contains space or tab characters.
Syntax
Full path to the executable with optional parameters.
See Also
Back Log⇑
Description
Specifies the backlog of the listening socket. Required if Start By Server is enabled.
Syntax
Integer number
Instances⇑
Description
Specifies the maximum instances of the external application the server will create. It is required if Start By Server is enabled. Most FastCGI/LSAPI applications can only process one request per process instance and for those types of applications, instances should be set to match the value of Max Connections. Some FastCGI/LSAPI applications can spawn multiple child processes to handle multiple requests concurrently. For these types of applications, instances should be set to "1" and environment variables used to control how many child processes the application can spawn.
Syntax
Integer number
Run As User⇑
Description
The external application will run as this specified user name. If not set, Virtual Host level settings will be inherited.
Default value: Not Set
Syntax
Valid username.
See Also
extGroup
Run As Group⇑
Description
The external application will run as this specified group name. If not set, Virtual Host level settings will be inherited.
Default value: Not Set
Syntax
Valid group name.
See Also
extUser
umask⇑
Description
Sets default umask for this external application's processes. See man 2 umask for details. The default value taken from the server-level umask setting.
Syntax
value valid range [000]-[777].
See Also
CGI umask
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.
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.
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