Articles in this section

Server with Plesk runs out of the space because of PHP-FPM logs

kb: bug kb: fixed Plesk for Linux ABT: Group A

Applicable to:

  • Plesk for Linux

Symptoms

PHP-FPM logs (/var/log/plesk-phpXX-fpm/error_log) get huge size and are not rotated so the server might run out of space

Cause

Product issue:

  • #PPPM-11362 "Plesk now daily rotates PHP-FPM error logs to prevent them from consuming all the server disk space and eventually causing issues on the server."
    Fixed in:

Note: Currently, /var/log/plesk-phpXX-fpm/error_log is shared and all domains write errors to it. As a result it is not included into any domain disk space statistics
As well as currently Plesk configured to rotate this log file on daily basis.

Resolution

Please consider updating your server:

Workaround

As a workaround, an additional log rotation by size for a PHP-FPM error log can be configured using native OS utilities, for example, the logrotate.
For more details refer to the logrotate documentation: https://linux.die.net/man/8/logrotate

Configuration example

The logrotate configuration file for PHP-FPM services is located in /etc/logrotate.d/ directory:

# ls -l /etc/logrotate.d/*php*
-rw-r--r-- 1 root root 203 Nov 15 23:36 /etc/logrotate.d/php-fpm
-rw-r--r-- 1 root root 211 Jan 9 13:25 /etc/logrotate.d/plesk-php56
-rw-r--r-- 1 root root 211 Jan 9 12:46 /etc/logrotate.d/plesk-php70
-rw-r--r-- 1 root root 211 Jan 9 11:11 /etc/logrotate.d/plesk-php71
-rw-r--r-- 1 root root 211 Jan 9 14:50 /etc/logrotate.d/plesk-php72

  1. Connect to the server via SSH

  2. Modify the corresponding file for required php-fpm service in an appropriate way
    For example, for the system PHP-FPM /etc/logrotate.d/php-fpm, file will look like the following:

    CONFIG_TEXT: /var/log/php-fpm/*log {
    rotate 14
    daily
    missingok
    notifempty
    size 100M
    compress
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
    /bin/kill -SIGUSR1 cat /run/php-fpm/php-fpm.pid 2>/dev/null 2>/dev/null || true
    endscript
    }

    Note: parameters rotate (specified in days), size and daily (or monthly, weekly) can be changed to meet the requirements.

    If it is required to rotate log files more often, then remove parameter daily from the config above and create a cron task.
    For example, the following will run logrotate every 5 hours:

    # crontab -e
    01 01,06,11,16,21 * * * /usr/sbin/logrotate /etc/logrotate.d/php-fpm -s /var/lib/logrotate/logrotate.status

Was this article helpful?

Comments

0 comments

Please sign in to leave a comment.