From logs I see, that before this, cluster was not stopped properly and the checkpoint was not saved to the disk. Because of that, after the start, nodes started to applying WAL changes(https://apacheignite.readme.io/docs/write-ahead-log). It took 1491578ms, probably because you have a very small heap size. Also, usually messages like "Possible too long JVM pause: 2710 milliseconds." is a symptom of a long GC pauses.
For this particular case, it's just enough to stop cluster gracefully before starting it again. Just deactivate cluster before stopping. In this case, when you will start the nodes again, they won't need to apply WAL changes.
You have a pretty small amount of heap and 30 caches. Each cache creates some overhead for node startup, because node should read states for each partition of each cache(and each partition is a separate file). You can reduce this overhead by configuring the same cache group:https://apacheignite.readme.io/docs/cache-groups. Also, if you have only 3 nodes, it makes sense to reduce the number of partitions for each cache, by configuring affinity function.