Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
litespeed_wiki:php_lsapi:environment_variables [2015/10/23 19:31]
Michael Alegre
litespeed_wiki:php_lsapi:environment_variables [2013/09/24 19:53] (current)
Michael
Line 1: Line 1:
 ====== Environment Variables for PHP LSAPI ====== ====== Environment Variables for PHP LSAPI ======
  
-Much of your LSPHP settings ​are controlled by your external application settings ​(WebAdmin console > Configuration > External App). These settings are explained in the LiteSpeed Web Server documentation. +Most PHP LSAPI configurations ​are found in the WebAdmin console ​(WebAdmin console > Configuration > External App). PHP LSAPI applications ​can be further configured using the environment variables listed below:
- +
-LSAPI setups ​can be further configured, however, ​using the directives and environment variables listed below+
- +
-===== LiteSpeed-Specific Directives ===== +
-**Note:** The following directives are LiteSpeed-specific directives. Apache will not understand them and may crash if they are not wrapped in **<​IfModule>​**,​ as in the following example: +
- +
-  <​IfModule LiteSpeed>​ +
-  LSPHP_ProcessGroup on +
-  LSPHP_Workers 15 +
-  </​IfModule>​ +
- +
-==== LSPHP_Workers ====  +
- +
-**LSPHP_Workers** controls the maximum number of worker/​child processes per account in shared hosting. This directive can be used at the server level or virtual host level. +
- +
-==== LSPHP_ProcessGroup ==== +
- +
-**LSPHP_ProcessGroup** turns ProcessGroup mode "​on"​ and "​off"​ when using Apache configs. This directive can be used at the server level or virtual host level. +
- +
-==== LSPHP_MaxWaitQ ==== +
- +
-**LSPHP_MaxWaitQ** sets a maximum number of processes that can be in the PHP external application wait queue. When this limit is reached, new requests will return a 508 "​Resource Limit Reached"​ error. This directive can be used at the server level or virtual host level. +
- +
- +
-===== Environment Variables =====+
  
 ==== LSAPI_CHILDREN or PHP_LSAPI_CHILDREN ==== ==== LSAPI_CHILDREN or PHP_LSAPI_CHILDREN ====
  
-(default: 35)+(default=0)
  
-PHP LSAPI allows a variety of setups. Two of these setupsWorker and ProcessGroup can be set using this environment variable. (Note: In previous versions of this documentation,​ Worker was referred to as "server managed mode" ​and ProcessGroup referred to as "self managed ​mode"​.) +There are two ways to let PHP handle multiple requests concurrently, server managed mode and self managed mode. In server managed ​mode, LiteSpeed Web Server dynamically spawns/​stops ​PHP processes. In this mode, an external application'​s ​"Instances" ​setting should match the "Max Connections" configurationTo start PHP in self managed mode, "​Instances"​ should be set to "​1",​ while the "LSAPI_CHILDREN" environment variable should be >1 and set to match the value of "Max Connections"​. In this mode the web server will start one PHP process, and this process will start/​stop ​child PHP processes ​dynamically based on on demand. ​Self managed mode is preferred because all PHP processes can then share one memory block for opcode caching. ​ 
- +If "​LSAPI_CHILDREN"​ %%<=%%1, PHP will be started in server managed mode. 
-Setting **LSAPI_CHILDREN** to <=1 puts LSWS in Worker ​mode. In Worker ​mode, LiteSpeed Web Server dynamically spawns ​new PHP processes to meet demand and kills finished ​processes. In this mode, an external application'​s Instances setting ​(WebAdmin console > Configuration > External App > your external application) ​should match the Max Connections ​setting (WebAdmin console > Configuration > External App > your external application). +Usually, there is no need to set the value of "LSAPI_CHILDREN" ​over "100".
- +
-Setting **LSAPI_CHILDREN** to >1 puts LSWS in ProcessGroup mode. In ProcessGroup ​modethe web server will start one constantly-running ​PHP parent ​process, and this process will fork child PHP processes ​(as opposed to spawning new processes) to meet demand. ​ProcessGroup ​is generally ​preferred because all PHP processes can then share one memory block for opcode caching. ​In ProcessGroup mode, Instances should be set to 1, while **LSAPI_CHILDREN** should ​be set to match the value of Max Connections. Usually, there is no need to set **LSAPI_CHILDREN** over 100+
- +
-**Note:** When using suEXEC set in Apache configs, LSWS's default **LSAPI_CHILDREN** changes to 0. Thus, the default Apache suEXEC is Worker mode. ProcessGroup can be enabled when using Apache configs by using the directive **LSPHP_ProcessGroup** listed above.+
  
 ==== LSAPI_AVOID_FORK ==== ==== LSAPI_AVOID_FORK ====
  
-(default0) +(default=0)
- +
-**LSAPI_AVOID_FORK** specifies whether the internal process manager in ProcessGroup mode should try to avoid forking new child processes. +
- +
-When set to 0, the internal process manager will not try to avoid forking new processes. To save system resources, it will stop processes when they finish and only start child processes when they are needed. This is often preferred in shared hosting.+
  
-When set to 1, the internal process manager will try to avoid frequently stopping and starting child processes. This might be preferred in a dedicated hosting environment ​because it may be faster to recycle existing processes, even if it means running processes when they are unused sometimes.+"​LSAPI_AVOID_FORK"​ specifies the policy of the internal process manager in self managed mode. When set to "​0",​ the internal process manager will stop and start child processes on demand to save system resources. This is preferred in a shared hosting environment. ​When set to "1", the internal process manager will try to avoid frequently stopping and starting child processes. This might be preferred in a dedicated hosting environment.
  
 ==== LSAPI_EXTRA_CHILDREN ==== ==== LSAPI_EXTRA_CHILDREN ====
  
-(default1/3 of **LSAPI_CHILDREN** or 0)+(default=1/3 of LSAPI_CHILDREN or 0)
  
-In ProcessGroup mode, **LSAPI_EXTRA_CHILDREN** controls the maximum number of extra child processes that can be started when existing child processes are malfunctioning. The total number of child processes will be reduced to the level set in **LSAPI_CHILDREN** as soon as service is back to normal. When **LSAPI_AVOID_FORK** is set to 0, the default value of **LSAPI_EXTRA_CHILDREN** is 1/3 of **LSAPI_CHIDLREN**. When **LSAPI_AVOID_FORK** is set to 1, the default value is 0.+"LSAPI_EXTRA_CHILDREN" ​controls the maximum number of extra child processes that can be started when existing child processes are malfunctioning. The total number of child processes will be reduced to the level set in "LSAPI_CHILDREN" ​as soon as service is back to normal. When "LSAPI_AVOID_FORK" ​is set to "0", the default value of "LSAPI_EXTRA_CHILDREN" ​is 1/3 of "LSAPI_CHIDLREN". When "LSAPI_AVOID_FORK" ​is set to "1", the default value is "0".
  
 ==== LSAPI_MAX_REQS or PHP_LSAPI_MAX_REQUESTS ==== ==== LSAPI_MAX_REQS or PHP_LSAPI_MAX_REQUESTS ====
  
-(default10000)+(default=10000)
  
-In ProcessGroup mode, this controls how many requests each child process will handle before it exits automatically. Several PHP functions have been identified as having memory leaks. This parameter can help reduce memory usage by leaky PHP functions.+This controls how many requests each child process will handle before it exits automatically. Several PHP functions have been identified as having memory leaks. This parameter can help reduce memory usage by leaky PHP functions.
  
 ==== LSAPI_MAX_IDLE ==== ==== LSAPI_MAX_IDLE ====
  
-(default300 seconds)+(default=300 seconds)
  
-In ProcessGroup ​mode, **LSAPI_MAX_IDLE** controls how long an idle child process will wait for a new request before it exits. This option helps release system resources taken by idle processes.+In self managed ​mode, "LSAPI_MAX_IDLE" ​controls how long idle child process will wait for a new request before it exits. This option helps release system resources taken by idle processes.
  
 ==== LSAPI_MAX_IDLE_CHILDREN ==== ==== LSAPI_MAX_IDLE_CHILDREN ====
  
-(default1/3 of **LSAPI_CHILDREN** or **LSAPI_CHILDREN**)+(default=1/3 of LSAPI_CHILDREN or LSAPI_CHILDREN)
  
-In ProcessGroup ​mode, **LSAPI_MAX_IDLE_CHILDREN** controls how many idle child processes are allowed. Extra idle child processes will be killed by the parent process immediately. When **LSAPI_AVOID_FORK** is set to 0, the default value of **LSAPI_MAX_IDLE_CHILDREN** is 1/3 of **LSAPI_CHIDLREN**. When **LSAPI_AVOID_FORK** is set to 1, the default value of **LSAPI_MAX_IDLE_CHILDREN** is the same as the value of **LSAPI_CHILDREN**.+In self managed ​mode, "LSAPI_MAX_IDLE_CHILDREN" ​controls how many idle child processes are allowed. Extra idle child processes will be killed by the parent process immediately. When "LSAPI_AVOID_FORK" ​is set to "0", the default value of "LSAPI_MAX_IDLE_CHILDREN" ​is 1/3 of "LSAPI_CHIDLREN". When "LSAPI_AVOID_FORK" ​is set to "1", the default value of "LSAPI_MAX_IDLE_CHILDREN" ​is the same as the value of "LSAPI_CHILDREN".
  
 ==== LSAPI_MAX_PROCESS_TIME ==== ==== LSAPI_MAX_PROCESS_TIME ====
  
-(default300 seconds)+(default=300 seconds)
  
-In ProcessGroup ​mode, **LSAPI_MAX_PROCESS_TIME** controls the maximum processing time allowed when processing a request. If a child process can not finish processing a request in the given time period, it will be killed by the parent process. This option can help get rid of dead or runaway child processes.+In self managed ​mode, "LSAPI_MAX_PROCESS_TIME" ​controls the maximum processing time allowed when processing a request. If a child process can not finish processing a request in the given time period, it will be killed by the parent process. This option can help get rid of dead or runaway child processes.
  
 ==== LSAPI_PGRP_MAX_IDLE ==== ==== LSAPI_PGRP_MAX_IDLE ====
  
-(defaultFOREVER)+(default=FOREVER)
  
-In ProcessGroup ​mode, **LSAPI_PGRP_MAX_IDLE** controls how long the parent process will wait before exiting when there are no child processes. This option can help release system resources taken up by an idle parent process. This environment variable has the same function as the Max Idle Time setting (WebAdmin console > Configuration > External App).+In self managed ​mode, "LSAPI_PGRP_MAX_IDLE" ​controls how long the parent process will wait before exiting when there are no child processes. This option can help release system resources taken up by an idle parent process.
  
 ==== LSAPI_PPID_NO_CHECK ==== ==== LSAPI_PPID_NO_CHECK ====
  
-By default, an LSAPI external application will exit automatically if the parent process dies. This is to reduce orphan processes when the web server is restarted. However, it may be desirable to disable this feature in situations such as when an LSAPI process was started manually from the command line. Adding the **LSAPI_PPID_NO_CHECK** environment variable (set it to 1) will disable the checking for the existence of a parent process. To turn off this setting, remove the environment variable completely. When PHP is started ​from the command line using the "​-b"​ option, checking is disabled automatically.+By default, an LSAPI external application will exit automatically if the parent process dies. This is to reduce orphan processes when the web server is restarted. However, it may be desirable to disable this feature in situations such as when an LSAPI process was started manually from the command line. Adding the "LSAPI_PPID_NO_CHECK" ​environment variable (set it to "1") will disable the checking for the existence of a parent process. To turn off this setting, remove the environment variable completely. When PHP is started using the "​-b"​ option, checking is disabled automatically.
  
 ==== LSAPI_ALLOW_CORE_DUMP ==== ==== LSAPI_ALLOW_CORE_DUMP ====
  
-By default, an LSAPI application will not leave a core dump file when it crashes. If you want to have LSPHP dump a core file, you should add this environment variable and set to 1. If set, core files will be created under the current working directory, generally the directory of the PHP script that crashed. To turn off this setting, remove the environment variable completely.+By default, an LSAPI application will not leave a core dump file when it crashes. If you want to have LSPHP dump a core file, you should add this environment variable and set to "1". If set, core files will be created under the current working directory, generally the directory of the PHP script that crashed. To turn off this setting, remove the environment variable completely.
  
 ==== LSAPI_ACCEPT_NOTIFY ==== ==== LSAPI_ACCEPT_NOTIFY ====
  
-By default, an LSAPI application will send back a notification packet whenever a request has been received. Since PHP LSAPI 5.0, it can be changed to only notify the server for newly established connections by setting this environment variable to 1. It is recommended as a way to gain performance in LiteSpeed Web Server 4.1 and later.+By default, an LSAPI application will send back a notification packet whenever a request has been received. Since PHP LSAPI 5.0, it can be changed to only notify the server for newly established connections by setting this environment variable to "1". It is recommended as a way to gain performance in LiteSpeed Web Server 4.1 and later.
  
 ==== LSAPI_SLOW_REQ_MSECS ==== ==== LSAPI_SLOW_REQ_MSECS ====
  
 If set to a non-zero number, LiteSpeed Web Server will log requests into an error log file if a request takes longer than the specified number of milliseconds. This can help identify scripts that are slowing down your server. If set to a non-zero number, LiteSpeed Web Server will log requests into an error log file if a request takes longer than the specified number of milliseconds. This can help identify scripts that are slowing down your server.
 
litespeed_wiki/php_lsapi/environment_variables.txt · Last modified: 2013/09/24 19:53 by Michael