task_server.pl: Speicherlimit beachten
authorSven Schöling <s.schoeling@linet-services.de>
Mon, 4 Mar 2019 15:43:35 +0000 (16:43 +0100)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Wed, 10 Jul 2019 09:47:55 +0000 (11:47 +0200)
(cherry picked from commit 7fcf2ca9960d160419aa89824cb4fb3a25188ad9)

config/kivitendo.conf.default
scripts/task_server.pl

index 219896c..0715dc0 100644 (file)
@@ -80,8 +80,14 @@ default_manager = german
 # processes). If either limit is reached at the end of the request
 # then the kivitendo process will exit.
 #
-# This only makes sense when running under FCGI. The FCGI manager will
-# then automatically start a new process.
+# This only applies for processes under FCGI and the task manager.
+# For CGI configurations the process will be terminated after each request
+# regardless of this setting.
+#
+# Note: this will only terminate processes with too high memory consumption. It
+# is assumed that an external managing service will start new instances. For
+# FCGI this will usually be apache or the wrapper scripts for nginx, for the
+# task server this will have to be the system manager.
 #
 # Numbers can be postfixed with KB, MB, GB. If no number is given or
 # the number is 0 then no checking will be performed.
index f11859b..2f3339c 100755 (executable)
@@ -25,6 +25,7 @@ use SL::Auth;
 use SL::DBUpgrade2;
 use SL::DB::AuthClient;
 use SL::DB::BackgroundJob;
+use SL::Dispatcher;
 use SL::BackgroundJob::ALL;
 use SL::Form;
 use SL::Helper::DateTime;
@@ -331,6 +332,10 @@ sub gd_run {
 
     clean_before_sleeping();
 
+    if (SL::Dispatcher::_memory_usage_is_too_high()) {
+      return;
+    }
+
     my $seconds = 60 - (localtime)[0];
     if (!eval {
       $SIG{'ALRM'} = sub {