Bottlenecks for syncing of Bitcoin Core are usually:
1. HDD instead of SDD. Due to the way Bitcoin Core, there is a
lot of reading/writing from/to disk during sync. HDDs are orders of magnitude slower than SDD... storing the blocks (or at least the "chainstate") on SDD will significantly boost sync speed.
2. Low RAM. If you don't have much RAM, Bitcoin Core needs to write out to disk more often... which will exacerbate any storage device speed bottlenecks as per #1. If you have a lot of RAM, or you're not using your machine for anything else while Bitcoin Core syncs, you can set the
dbcache value to at least half of your system's total RAM amount. This gives Bitcoin Core more room to store temp data in RAM rather than reading/writing to disk. You can set this within Bitcoin Core GUI in the "Settings -> Options -> Main" tab:
(As you can see, it defaults to 450MB)
or you can use the
dbcache parameter in your bitcoin.conf file:
Where XXXX is "half your total ram" in Megabytes... ie. 4096 = 4Gigs, 8192 = 8 Gigs. 16384 = 16 gigs etc.
3. Low-end CPU. There is a lot of processing involved with validating all the blocks etc... a low end CPU will slow this down
4. Low bandwidth. It's a total of ~350Gigs of data to download... if your internet is super slow, this will impact the syncing rate. It's generally not as much of a bottleneck as the other 3 points, unless you're still on dial-up or your ISP is throttling your connection due to bandwidth restrictions etc.
5. No peers. Generally not a huge issue for the vast majority of users, but if you're not seeing any connections on the "Window -> Information" screen, then it's possible that your connection is blocked (check firewall settings etc).