Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
litespeed_wiki:cloudlinux:lsphp_criu_enable [2018/05/11 00:14] Eric Leu [Step 3] |
litespeed_wiki:cloudlinux:lsphp_criu_enable [2019/10/15 18:40] Lisa Clarke [How to Enable CRIU on CloudLinux + cPanel EA4 + LSWS] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== How to enable CRIU ====== | + | ====== Enabling CRIU on CloudLinux + cPanel EA4 + LSWS ====== |
- | ===== Summary ===== | + | **IMPORTANT!! CRIU may cause stability issues! Enable CRIU AT YOUR OWN RISK!** |
- | Checkpoint/Restore In Userspace, or CRIU, is an open source project which dumps all of the information of a running process to disk and restores it at the point of the dump. The Litespeed Enterprise Edition Web Server now supports CRIU both natively, and for the CloudLinux/Apache specific implementation for the PHP processor. This will improve the performance of Litespeed for transactions which are commonly used and reduce the memory overhead on the server. | + | Checkpoint/Restore In Userspace, or CRIU, is an open source project which dumps all of the information of a running process to disk and restores it at the point of the dump. The LiteSpeed Enterprise Edition Web Server now supports CRIU for the CloudLinux implementation of the PHP processor. |
- | ===== Must ===== | + | However, generally, we don't recommend you enable CRIU unless you have a special requirement for it. CRIU uses significant server resources and may generate unusual errors while providing no performance benefits. |
- | - Running as the root user to use CRIU Litespeed or Apache. The CRIU facility requires Litespeed run as the root user to perform the snapshot and recovery. Running as a non-root user automatically disables CRIU. | + | **We have received quite a few reports that potential bugs on the CRIU module may cause web server stability issues. Please permanently disable CRIU, or enable CRIU AT YOUR OWN RISK**. |
- | - CloudLinux System | + | |
+ | ===== Requirements ===== | ||
+ | |||
+ | - CloudLinux System | ||
+ | - ea-apache24-mod_lsapi 1.1 on cpanel EA4 (or mod_lsapi on cPanel EA3) or above | ||
+ | - LiteSpeed Web Server 5.3 or above. | ||
+ | |||
===== Installation ===== | ===== Installation ===== | ||
- | ==== 1. CRIU enabled from System ==== | + | |
- | Login your Linux system. Check CRIU service is running or not. \\ | + | ==== Verify CRIU is enabled on your system ==== |
- | If not, enable by following method \\ | + | |
+ | Criu is installed with dependency to ea-apache24-mod_lsapi for cpanel EA4( or mod_lsapi for cpanel EA3) 1.1 and above package. | ||
+ | |||
+ | If you have not installed it, you should: | ||
+ | |||
+ | <code>yum install liblsapi liblsapi-devel</code> | ||
+ | |||
+ | <code> | ||
+ | ============================================================================================================================================================================= | ||
+ | Package Arch Version Repository Size | ||
+ | ============================================================================================================================================================================= | ||
+ | Installing: | ||
+ | liblsapi x86_64 1.1-28.el7.cloudlinux cloudlinux-x86_64-server-7 180 k | ||
+ | liblsapi-devel x86_64 1.1-28.el7.cloudlinux cloudlinux-x86_64-server-7 37 k | ||
+ | Installing for dependencies: | ||
+ | crit-lve x86_64 3.7-3.el7 cloudlinux-x86_64-server-7 9.6 k | ||
+ | criu-lve x86_64 3.7-3.el7 cloudlinux-x86_64-server-7 439 k | ||
+ | criu-lve-devel x86_64 3.7-3.el7 cloudlinux-x86_64-server-7 11 k | ||
+ | libnet x86_64 1.1.6-7.el7 cloudlinux-x86_64-server-7 58 k | ||
+ | protobuf-c x86_64 1.0.2-3.el7 cloudlinux-x86_64-server-7 27 k | ||
+ | protobuf-python x86_64 2.5.0-8.el7 cloudlinux-x86_64-server-7 129 k | ||
+ | python-criu-lve x86_64 3.7-3.el7 cloudlinux-x86_64-server-7 136 k | ||
+ | python-ipaddr noarch 2.1.11-1.el7 cloudlinux-x86_64-server-7 34 k | ||
+ | |||
+ | Transaction Summary | ||
+ | ============================================================================================================================================================================= | ||
+ | Install 2 Packages (+8 Dependent packages) | ||
+ | </code> | ||
+ | |||
+ | <code>yum install ea-apache24-mod_lsapi</code> | ||
+ | |||
+ | Check CRIU whether the service is running or not. \\ | ||
+ | |||
+ | ps -ef | grep criu | ||
+ | root 967641 1 0 19:24 ? 00:00:00 /usr/sbin/criu service -v4 -o /var/log/criu-service.log --address /var/run/criu/criu_service.socket | ||
+ | root 967680 965818 0 19:24 pts/1 00:00:00 grep --color=auto criu | ||
+ | |||
+ | |||
+ | |||
+ | If not, enable by following method: | ||
<code> | <code> | ||
- | systemctl enable criu | + | systemctl enable criu |
systemctl start criu | systemctl start criu | ||
systemctl status criu | systemctl status criu | ||
</code> | </code> | ||
- | Output **''Active: active (running)''** | ||
- | ====2. CRIU parameter check==== | ||
- | Generally PHP should be compiled with criu already. \\ | ||
- | Through ''phpinfo()'' to check LSPHP build with parameter: ''-DWITH_CRIU''. | ||
- | If you want to manually compile, please download LSAPI from [[https://www.litespeedtech.com/open-source/litespeed-sapi/download | here ]] | + | Output should be ''Active: active (running)''. |
- | ====3. php env config==== | + | [root@globalsupport ~]# systemctl status criu |
- | Add following necessary parameter to the PHPx.x External App -> Environment \\ | + | ● criu.service - Checkpoint Restore in Userspace daemon |
+ | Loaded: loaded (/usr/lib/systemd/system/criu.service; disabled; vendor preset: disabled) | ||
+ | Active: active (running) since Mon 2018-08-20 19:24:25 UTC; 4min 23s ago | ||
+ | Process: 967640 ExecStartPre=/bin/mkdir -p /var/run/criu (code=exited, status=0/SUCCESS) | ||
+ | Main PID: 967641 (criu) | ||
+ | CGroup: /system.slice/criu.service | ||
+ | └─967641 /usr/sbin/criu service -v4 -o /var/log/criu-service.log --address /var/run/criu/criu_service.socket | ||
+ | |||
+ | Aug 20 19:24:25 globalsupport.litespeedtech.com systemd[1]: Starting Checkpoint Restore in Userspace daemon... | ||
+ | Aug 20 19:24:25 globalsupport.litespeedtech.com systemd[1]: Started Checkpoint Restore in Userspace daemon. | ||
+ | Aug 20 19:24:25 globalsupport.litespeedtech.com criu[967641]: Warn (criu/kerndat.c:660): Can't load /run/criu.kdat | ||
+ | |||
+ | ====CRIU Master Switch on LSWS ==== | ||
+ | CRIU is disabled by default. To enable it, you can go to LSWS Web Admin Console -> Server -> PHP -> PHP Global Configuration -> Enable CRIU( Again, we recommend you keep CRIU off unless you have some speical testing need only). | ||
+ | {{:litespeed_wiki:cloudlinux:lsws-master-criu-switch.png?800|}} | ||
+ | |||
+ | ==== Check CRIU parameters==== | ||
+ | In CloudLinux, LSPHP have been compiled with CRIU already. Please check [[https://docs.cloudlinux.com/index.html?criu_support.html|here]] \\ | ||
+ | Use ''phpinfo()'' with parameter ''-DWITH_CRIU'' to check the LSPHP build. | ||
+ | |||
+ | |||
+ | |||
+ | ====Configure the PHP environment==== | ||
+ | Add the following necessary parameter to the PHPx.x **External App > Environment** \\ | ||
<code> | <code> | ||
LSAPI_CRIU=1 | LSAPI_CRIU=1 | ||
Line 35: | Line 99: | ||
{{:litespeed_wiki:cloudlinux:criu-2.png?|}} | {{:litespeed_wiki:cloudlinux:criu-2.png?|}} | ||
- | ====Important Syntax==== | + | ===Important Syntax=== |
^Variable^Values^Default^Description^ | ^Variable^Values^Default^Description^ | ||
|LSAPI_CRIU|1/On/Off|Off|If set to On, CRIU will be performed. 1=On| | |LSAPI_CRIU|1/On/Off|Off|If set to On, CRIU will be performed. 1=On| | ||
Line 43: | Line 107: | ||
===== How to Verify ===== | ===== How to Verify ===== | ||
- | **Step 1** \\ | + | ====Step 1==== |
- | - Prepare any php site, e.g. WordPress | + | - Prepare any PHP site, e.g. WordPress |
- | + | ====Step 2==== | |
- | **Step 2** \\ | + | |
- Generate the dump by hitting the WordPress site | - Generate the dump by hitting the WordPress site | ||
- | - Hit more than innnitial number, e.g. 20 times | + | - Hit more than INITIAL_START number, e.g. 20 times |
- | - If image dump generated, you should see an image folder under ''/var/run/lsws/cl_criu/'' | + | - If an image dump is generated, you should see an image folder under ''/var/run/lsws/cl_criu/'' |
- | **Step 3** \\ | + | ====Step 3==== |
- | - Check PHP process number by \\ ''ps -ef | grep php'' \\ ''user 868577 ... 10:54 0:00 lsphp'' | + | - Check the PHP process number by <code>ps -ef | grep php |
- | - Kill the lsphp process \\ ''kill -9 868577'' | + | >>> user 868577 ... 10:54 0:00 lsphpL</code> |
- | ==== Step 4==== | + | - Kill the lsphp process via <code>kill -9 868577</code> |
- | - To restore the PHP by refreshing the WordPress page to regenerate it | + | ====Step 4==== |
- | - Verify the process number is same as before \\ ''ps -ef | grep php'' \\ ''user 868577 ... 10:55 0:00 lsphp'' \\ Process is **back**!! | + | - Restore the PHP by refreshing the WordPress page to regenerate it |
- | - You can also check standard error log \\ ''LSCRIU: Successful CloudLinux dump of PID: 868577'' \\ ''LSCRIU: Successful CloudLinux restore of PID: 868577, parent: 1.'' | + | - Verify the process number is the same as before:<code>ps -ef | grep php |
+ | >>> user 868577 ... 10:55 0:00 lsphp</code>The process is **back**!! | ||
+ | - You can also check standard error log for something like <code>LSCRIU: Successful CloudLinux dump of PID: 868577 | ||
+ | LSCRIU: Successful CloudLinux restore of PID: 868577, parent: 1.</code> | ||
===== Logs ===== | ===== Logs ===== | ||
- | - **Error log** default locate at Apache standard error log | + | - **Error log** default located at Apache standard error log |
- | - **dump.log** is in the images directory | + | - ''dump.log'' is in the images directory |
- | - **restore.log** is in the images directory | + | - ''restore.log'' is in the images directory |
- | * restore.log will gets generated even though there is no dump, so it's expected to see some related fail logs | + | |
+ | **NOTE**: ''restore.log'' is generated even when there is no dump, so it's expected to see some related fail logs | ||