Arduino has an internal timing rollover, which can cause bad things...if you are not aware of, read this:
https://playground.arduino.cc/Code/TimingRollover
The internal milli() function rolls over at every ~
Even better article: learn to live with and how to handle it well.
Well, systems works stable, without any problems:
As alternative, you may use now() for timing purposes, but use it wisely. Depends what you want for.