I've been running monerod 0.14.0.2, and it has been working well for several months. Today I noticed that it had fallen about 10,000 blocks behind. I killed it and restarted it, and called status every few minutes to see what was going on. It was syncing, but it would go for about 100 blocks and then get stuck. I killed it again and restarted it a few times, calling status. Sometimes status would report that it was 100% synced to current blockheight (even though it is not), sometimes it would correctly report that it was behind, but would make little progress. I tried --db-sync-mode fastest:async: (not sure what that does since it's not really documented, but seemed worth a try), but didn't see a difference.
I can't figure out why it would be behaving differently than before, and I don't see a way to fix it. Is there some kind of denial of service attack going on right now? If not, how do I get it caught up again?