You can configure thread pools In /conf/services/runtime.cfg. I believe these are the default values…
org.eclipse.smarthome.threadpool:thingHandler=5
org.eclipse.smarthome.threadpool:discovery=5
org.eclipse.smarthome.threadpool:safeCall=10
org.eclipse.smarthome.threadpool:ruleEngine=5
You can check your current settings with this Karaf command…
config:list "(service.pid=org.eclipse.smarthome.threadpool)"
I recently had cron rules failing due to the CalDav binding failing to connect to our DavMail server. Setting the Quartz schedulr to debug is very helpful. It gives you the time of the last successful job, which is a starting point for investigating what is causing the hang. More details in my comment here…