Inserting many records into a localhost database takes a long time on a high-spec BAREMETAL server, much slower than a low-spec VM.
Replicate issue:
Wrote a script on localhost. The script will:
- 1. create process A (listen on localhost:8080)
2. create process B, send 10Mb to process A over TCP (localhost:8080). Repeat 10000 times
3. create process B, send 1Gb to process A over TCP (localhost:8080). Repeat 10 times
4. complete. calculate total time used
- Data is sent over TCP, it will not write anything on disk.
12 seconds to complete 10Mb (10000 times)
5 seconds to complete 1Gb (10 times)
On BAREMETAL server (CentOS 7.9) running 64 core CPU, 400G RAM:
35 seconds to complete 10Mb (10000 times). why?
5 seconds to complete 1Gb (10 times)
Checklist:
- 1. vnstat, ifconfig, cbm - no network bottleneck, no error, no packet drop on localhost
2. sar & htop - no resource bottleneck
3. swap - no swapping occured