Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
litespeed_wiki:cloudlinux:lsphp_criu_enable [2019/10/15 18:41] Lisa Clarke [Enabling CRIU on CloudLinux + cPanel EA4 + LSWS] |
litespeed_wiki:cloudlinux:lsphp_criu_enable [2025/05/21 18:40] (current) Lisa Clarke Redirect to new Documentation Site |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Enabling CRIU on CloudLinux + cPanel EA4 ====== | + | ~~REDIRECT>https://docs.litespeedtech.com/cp/cpanel/cloudlinux/~~ |
- | + | ||
- | **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 for the CloudLinux implementation of the PHP processor. | + | |
- | + | ||
- | 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. | + | |
- | + | ||
- | **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**. | + | |
- | + | ||
- | ===== 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 ===== | + | |
- | + | ||
- | ==== Verify CRIU is enabled on your system ==== | + | |
- | + | ||
- | 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> | + | |
- | systemctl enable criu | + | |
- | systemctl start criu | + | |
- | systemctl status criu | + | |
- | </code> | + | |
- | + | ||
- | + | ||
- | Output should be ''Active: active (running)''. | + | |
- | + | ||
- | [root@globalsupport ~]# systemctl status criu | + | |
- | ● 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> | + | |
- | LSAPI_CRIU=1 | + | |
- | </code> | + | |
- | Example for PHP56 + Enable CRUI + Set INITIAL\\ | + | |
- | {{:litespeed_wiki:cloudlinux:criu-2.png?|}} | + | |
- | + | ||
- | ===Important Syntax=== | + | |
- | ^Variable^Values^Default^Description^ | + | |
- | |LSAPI_CRIU|1/On/Off|Off|If set to On, CRIU will be performed. 1=On| | + | |
- | |LSAPI_INITIAL_START|A number from 1 upwards.|15|The number of consecutive calls which must be made within a single PHP instance before a dump of the instance will be made. If there’s no PHP instance running and there’s a dump on disk it will be restored on the first use.| | + | |
- | |LSAPI_CRIU_IMGS_DIR_PATH|Any valid, existing directory|/var/run/lsws/cl_criu/|CRIU images will start from this directory; a subdirectory named "images" will be created below and then a directory for each user's type of request. There needs to be lots of free space in this file system.| | + | |
- | |LSAPI_CRIU_DEBUG|On/Off|Off|If set to ''On'', messages concerning CRIU processing will be written to the stderr.log file (usually in /usr/local/apache2/logs/stderr.log)| | + | |
- | + | ||
- | ===== How to Verify ===== | + | |
- | ====Step 1==== | + | |
- | - Prepare any PHP site, e.g. WordPress | + | |
- | ====Step 2==== | + | |
- | - Generate the dump by hitting the WordPress site | + | |
- | - Hit more than INITIAL_START number, e.g. 20 times | + | |
- | - If an image dump is generated, you should see an image folder under ''/var/run/lsws/cl_criu/'' | + | |
- | ====Step 3==== | + | |
- | - Check the PHP process number by <code>ps -ef | grep php | + | |
- | >>> user 868577 ... 10:54 0:00 lsphpL</code> | + | |
- | - Kill the lsphp process via <code>kill -9 868577</code> | + | |
- | ====Step 4==== | + | |
- | - Restore the PHP by refreshing the WordPress page to regenerate it | + | |
- | - 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 ===== | + | |
- | - **Error log** default located at Apache standard error log | + | |
- | - ''dump.log'' is in the images directory | + | |
- | - ''restore.log'' is in the images directory | + | |
- | + | ||
- | **NOTE**: ''restore.log'' is generated even when there is no dump, so it's expected to see some related fail logs | + |