Article ID: 119500, created on Nov 5, 2014, last review on Nov 6, 2014

  • Applies to:
  • Plesk 12.5 for Linux
  • Plesk 12.0 for Linux
  • Plesk 11.0 for Linux
  • Plesk 11.5 for Linux
  • Plesk 10.4 for Linux/Unix

Kennzeichen

  1. Der Ordner, der die PHP-Sitzungen enthält, besitzt sehr viele Dateien:

    ~# ls -l /var/lib/php/session | wc -l
    1139718
    
  2. Bei der Ausführung von /etc/cron.hourly/plesk-php-cleanuper steigt die CPU-Auslastung auf 100% an.

  3. Der Versuch, alle laufenden PHP-Sitzungsprozesse herauszufinden, schlägt fehl und es wird folgender Fehler angezeigt:

    ~# [ -x /usr/lib64/plesk-9.0/maxlifetime ] && [ -d /var/lib/php/session ] && find /var/lib/php/session -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib64/plesk-9.0/maxlifetime) ! -execdir fuser {} \; -delete
        Cannot open a network socket.
        Cannot open /proc directory: Too many open files
        fuser: error while loading shared libraries: libc.so.6: cannot open shared object file: Error 24
        find: Failed to save working directory in order to run a command on `sess_fch2h2dm7s73t0g09r3dmepdp0': Too many open files
    

Ursache

Das Skript plesk-php-cleanuper enthält die Zeichenkette ! -execdir fuser {} \, wodurch jede Datei im Verzeichnis /var/lib/php/session geöffnet wird und überprüft wird, ob sie auch nicht von einem Arbeitsprozess genutzt wird und somit gelöscht werden kann. Jedoch ist die maximale Anzahl an offenen Dateien standardmäßig auf 1024 festgelegt.

Lösung

  1. Leeren Sie /var/lib/php/session mithilfe des Skripts ohne das Checker-Tool:

    ~# [ -x /usr/lib64/plesk-9.0/maxlifetime ] && [ -d /var/lib/php/session ] && find /var/lib/php/session -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib64/plesk-9.0/maxlifetime) -delete
    
  2. Erhöhen Sie die Grenze für offene Dateien auf den erforderlichen Wert.

Um die maximale Anzahl an offenen Dateien abzurufen, müssen Sie folgenden Befehl ausführen:

    ~# ulimit -a
    open files                      (-n) 1024

Fügen Sie ulimit -n 30480 zu /etc/cron.hourly/plesk-php-cleanuper hinzu:

    ~#cat /etc/cron.hourly/plesk-php-cleanuper
    ~#!/bin/sh
    ~ulimit -n 30480
  1. Starten Sie den gewünschten Cron-Job erneut und beobachten Sie, ob er erfolgreich durchgeführt wird.

a914db3fdc7a53ddcfd1b2db8f5a1b9c 56797cefb1efc9130f7c48a7d1db0f0c 01bc4c8cf5b7f01f815a7ada004154a2 29d1e90fd304f01e6420fbe60f66f838 0a53c5a9ca65a74d37ef5c5eaeb55d7f e0aff7830fa22f92062ee4db78133079 e8756e9388aeca36710ac39e739b2b37 dd0611b6086474193d9bf78e2b293040 caea8340e2d186a540518d08602aa065 aea4cd7bfd353ad7a1341a257ad4724a 2a5151f57629129e26ff206d171fbb5f e335d9adf7edffca6a8af8039031a4c7 742559b1631652fadd74764ae8be475e

Email subscription for changes to this article
Save as PDF