Finding faulty components in a dynamic distributed system at runtime