Rules not responding anymore

I have quite a large installation in a docker contrainer on a Synolgic NAS (with 8 GB RAM) which becomes struck after a while (randomly, mostly some days to some weeks).

Observed behavior:
Even simple rules are not executed anymore but I could still controll KNX via openHAB UI.
For example I have an item that can still be controlled via KNX and UI but the trigger rule below (to close KNX and non-KNX rollershutters) does not react

rule "RollladenRunter"
when
	Item Szene_Rollladen_Runter changed to ON
then
	logInfo("Rollladen", "Rollladen runter")

Neither memory nor CPU usage show spikes / come to the limits.
The only other odd thing I observe is that the tablet with HABPanel is updating super slowly.

Any idea how I could debug this problem? I’m a bit clueless …

Having similar issues currently. I haven’t a lot of rules. No sleeps or long running rules. Older rule files are working fine. But rules that were created a few days ago are causing problems. For example: I have 3 .rule-files. If i update them, only the last touched rule-file is working. No rules in the other two files will be executed.

It might be an SD card issue. I don’t know. SD card is only 3 months old and the only persistence I use is MapDB.

There are a lot of ways to write rules that eventually consume all the rule threads, and stop new rules from starting.

Read all those threads around it and try to alter rules but still couldn’t find the problem.

The rules are executed by openHAB-job-scheduler_Worker-1 (and following) right?
Seems like they are all idle.

openhab> threads --monitors --locks

"openHAB-job-scheduler_Worker-1" Id=117 in TIMED_WAITING on lock=java.lang.Object@2985f79d
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)

"openHAB-job-scheduler_Worker-2" Id=118 in TIMED_WAITING on lock=java.lang.Object@1b3a3870
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)

"openHAB-job-scheduler_Worker-3" Id=119 in TIMED_WAITING on lock=java.lang.Object@3572a0e4
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)

"openHAB-job-scheduler_Worker-4" Id=120 in TIMED_WAITING on lock=java.lang.Object@65dc4329
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)

"openHAB-job-scheduler_Worker-5" Id=121 in TIMED_WAITING on lock=java.lang.Object@2ec389db
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)

"openHAB-job-scheduler_Worker-6" Id=122 in TIMED_WAITING on lock=java.lang.Object@2da078d2
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)

"openHAB-job-scheduler_Worker-7" Id=123 in TIMED_WAITING on lock=java.lang.Object@7d35b977
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)

"openHAB-job-scheduler_Worker-8" Id=124 in TIMED_WAITING on lock=java.lang.Object@274d9331
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)

"openHAB-job-scheduler_Worker-9" Id=125 in TIMED_WAITING on lock=java.lang.Object@d81dc29
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)

"openHAB-job-scheduler_Worker-10" Id=126 in TIMED_WAITING on lock=java.lang.Object@1a995b98
    at java.lang.Object.wait(Native Method)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)

Or is the threadpool shared with something else (persistance?)?

Any idea how I could further debug that? Currently I have to ~weekly restart OpenHAB as it is no more reacting …