Xeon 1240v2 has only 4 cores. Forget that hyperthreading crap, those are not true cpu-cores. So one cpu-core for esxi (it needs cpu too) and four vCPUs for VM, that is more than 4 true cores you have => over-commiting! Your VM does not know anything about hyperthreading, it thinks it has 4 full cores for all the time only for itself (which is not true) and tries to ballance cpu-load (even in case of single-threaded application). Give only 2 (max 3) vCPUs to your web-server VM and check what happens.
Look at buffers/cache, it takes ~22GB of 24GB you assigned for VM. That is a symptom of heavy i/o operations and poor memory management. I do not know your web-server configuration, but I suppose it is maybe not optimal. I think at least 1/3 of ram should be used by reverse-proxy cache, the other 30% by database-cache (if you have one), rest for OS/apps. In your case nearly all RAM is used by OS for disk cache/buffers.
Concerning disk speed, you can not compare sequential r/w (which is done during VM-migration) and random i/o, that is typical for web-server. If you have classic disks (not ssd), random r/w speed can drop even to a few MB/s, depending on fragmentation...