Any sort of fast, large area DoT (damage over time) on structures will likely have some performance issues since default values on checking entity health are about 1/10th of a second. You can adjust the entity check value to a second or every couple of seconds to alleviate the slowdowns.
I'm already using on_damaged events as to not have to iterate through every entity in existence and check health. I've also considered removing tick checking, but it has some unintended behavior of fully resetting an entity's hp or incorrect damage reduction whenever it takes more damage than the max health.