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
Previous revision
litespeed_wiki:php:lsapi-environment-variables [2019/11/22 17:04]
Jackson Zhang [LSAPI_CLEAN_SHUTDOWN]
litespeed_wiki:php:lsapi-environment-variables [2023/01/31 20:51] (current)
Lisa Clarke Redirect to new Documentation Site
Line 1: Line 1:
-====== PHP LSAPI Directives + Environment Variables ====== +~~REDIRECT>https://docs.litespeedtech.com/​lsws/​extapp/​php/​configuration/​options/~~
- +
-Much of your LSPHP settings(Environment Variables) are controlled by your external application settings (WebAdmin console ​Configuration > External App), while "​LSPHP_ProcessGroup on" and "​LSPHP_Workers xx" are directives to be used within apache configuration in control panel environment. These settings and directives are explained in the LiteSpeed Web Server documentation. +
- +
-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 to be used in Apache configuration files read by LiteSpeed Web Server in control panel environmentsThey are used to enable PHP ProcessGroup mode in control panel environments (When using LiteSpeed Web Server (native), there is no need to add these directives as processGroup will be configured through an external applicationPlease check [[litespeed_wiki:​php:​which_php_setup_am_i_using#​suexec_processgroup_mode|here]] for setup details).  +
- +
-Apache will not understand these directives and may crash if they are not wrapped in ''<​IfModule LiteSpeed>''​ tags, as in the following example: +
- +
-  <​IfModule LiteSpeed>​ +
-  LSPHP_ProcessGroup on +
-  LSPHP_Workers 15 +
-  </IfModule>​ +
- +
-==== LSPHP_Workers ====  +
- +
-The ''​LSPHP_Workers''​ directive controls the maximum number of worker/​child processes per account in a shared hosting environment. This directive can be used at the server or virtual host level. +
- +
-==== LSPHP_ProcessGroup ==== +
- +
-The ''​LSPHP_ProcessGroup''​ directive turns ProcessGroup mode ''​on''​ and ''​off''​ when using Apache ​configuration ​files. This directive can be used at the server or virtual host level. +
- +
-==== LSPHP_MaxWaitQ ==== +
- +
-The ''​LSPHP_MaxWaitQ''​ directive sets the 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 or virtual host level. +
- +
- +
-===== LSPHP External App Environment Variables ===== +
- +
-The following environment variables are supposed to be used at LSPHP external app configurations,​ not to be used in apache configuration.  +
-==== LSAPI_CHILDREN or PHP_LSAPI_CHILDREN ==== +
- +
-Default Value: ''​35''​ +
- +
-PHP LSAPI allows a variety of process modes. Two of these modes, Worker 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"​.) +
- +
-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 under **Configuration > External App > your_external_application** should match the **Max Connections** setting in the same location. +
- +
-Setting ''​LSAPI_CHILDREN''​ to ''​a number larger than 1''​ puts LSWS in ProcessGroup mode. In ProcessGroup mode, the web server will start one constantly-running PHP parent process. This process will then fork child PHP processes (as opposed to spawning new processes) to meet demand. ProcessGroup mode 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**. +
- +
-==== LSAPI_AVOID_FORK ==== +
- +
-Default Value: ''​0''​ +
- +
-The ''​LSAPI_AVOID_FORK''​ environment variable 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 sometimes running unused processes. +
- +
-However, if your server has less than 1 GB available memory, just setting ''​LSAPI_AVOID_FORK=1''​ will not work, since LSPHP will only keep the child processes if there is enough available memory which by default is set to 1 GB, If your server has less available memory than that, set it with a limit by replacing it with ''​LSAPI_AVOID_FORK=100M''​. This will set a limit for the ''​LSAPI_AVOID_FORK''​ variable and will run as expected. +
- +
-==== LSAPI_EXTRA_CHILDREN ==== +
- +
-Default Value:\\ +
-If ''​LSAPI_AVOID_FORK''​ is set to ''​0'':​ ''​LSAPI_CHILDREN/3''​\\ +
-If ''​LSAPI_AVOID_FORK''​ is set to ''​1'':​ ''​0''​ +
- +
-In ProcessGroup mode, the ''​LSAPI_EXTRA_CHILDREN''​ environment variable 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. +
- +
-==== LSAPI_MAX_REQS or PHP_LSAPI_MAX_REQUESTS ==== +
- +
-Default Value: ''​10000''​ +
- +
-In ProcessGroup mode, this environment variable controls the number of requests each child process will handle before exiting 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 ==== +
- +
-Default Value: ''​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. +
- +
-==== LSAPI_MAX_IDLE_CHILDREN ==== +
- +
-Default Value:\\ +
-If ''​LSAPI_AVOID_FORK''​ is set to ''​0'':​ ''​LSAPI_CHILDREN/3''​\\ +
-If ''​LSAPI_AVOID_FORK''​ is set to ''​1'':​ ''​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. +
- +
-==== LSAPI_MAX_PROCESS_TIME ==== +
- +
-Default Value: ''​300''​ seconds +
- +
-The ''​LSAPI_MAX_PROCESS_TIME''​ environment variable controls the total time that a PHP process can spend processing a request. It is only effective in ProcessGroup or Daemon mode. The parent process will kill child processes spending more time than this threshold. +
- +
-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 frame, it will be killed by the parent process. This option can help get rid of dead or runaway child processes. +
-==== LSAPI_PGRP_MAX_IDLE ==== +
- +
-Default Value: ''​FOREVER''​ +
- +
-In ProcessGroup mode, the ''​LSAPI_PGRP_MAX_IDLE''​ environment variable controls how long the parent process will wait before exiting when there are no child processes running. This option can help release system resources taken up by an idle parent process. This environment variable has the same function as the the **Max Idle Time** setting under **Configuration > External App**. +
- +
-==== LSAPI_PPID_NO_CHECK ==== +
- +
-By default, an LSAPI external application will exit automatically when 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 certain situations, such as when an LSAPI process was started manually from the command line. +
- +
-Adding the ''​LSAPI_PPID_NO_CHECK''​ environment variable and setting it to ''​1''​ will disable the check for the existence of a parent process. To turn this setting off, remove the environment variable completely. When PHP is started from the command line using the ''​-b''​ option, this check is disabled automatically. +
-==== 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. +
- +
-==== LSAPI_ACCEPT_NOTIFY ==== +
- +
-By default, an LSAPI application will send back a notification packet whenever a request has been received. As of PHP LSAPI v5.0, it can be changed to only notify the server for newly established connections by setting this environment variable to ''​1''​. This is recommended as a way to gain performance in LiteSpeed Web Server v4.1 and later. +
- +
-==== 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. +
- +
-==== LSAPI_CLEAN_SHUTDOWN ==== +
-It is avaliable starting PHP LiteSpeed SAPI 7.6. ''​clean shutdown''​ means to clean up if PHP crash or abnormal exit. For example, sometimes PHP 5.x still has strange error due to internal corruption and manually killing PHP process will fix the problem. Now you can use ''​LSAPI_CLEAN_SHUTDOWN''​ environment variable to let lsphp to automatically fix such abnormal crash issue. When set ''​LSAPI_CLEAN_SHUTDOWN=0'',​ it disables ''​clean shutdown'';​ while set ''​ LSAPI_CLEAN_SHUTDOWN=1'',​ it enables ''​clean shutdown''​. For PHP 7.0+, it is set to ''​on''​ by default; For lower versions than PHP 7.0, it is set to be ''​off''​ by default.+
  • Admin
  • Last modified: 2019/11/22 17:04
  • by Jackson Zhang