Chọn VPS nào, ở đâu, cấu hình như thế nào … ? Là những câu hỏi thường gặp khi triển khai hệ thống server.
Sau đây là kinh nghiệm của mình về những hệ thống vừa & nhỏ đã triển khai.
I. Memory
Tuỳ thuộc vào nhu cầu sử dụng bộ nhớ ứng dụng để có thể đưa ra cấu hình memory tương ứng.
Theo như kinh nghiệm của mình MySQL cần có cấu hình tối thiểu 2GB để tránh crash MySQL
Đối với MongoDB, Solr, Redis cần có memory hơn 2GB (4/8GB) để có thể hoạt động tốt, vì những ứng dụng này chiếm dụng memory rất nhiều.
II. CPU
CPU tuỳ thuộc vào lượng sử dụng web server của bạn. Số lượng CPU sẽ ảnh hưởng đến process đổng thời có thể xử lý của các application (Nginx/PHP-FPM/…)
CPU ít nhất để có thể có một hệ thống ổn định khoảng 2CPUs.
III. Disk I/O
1. Kiểm tra đồng thời random read & random write
Chạy command sau
fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=zodinet --filename=zodinet --bs=4k --iodepth=64 --size=4G --readwrite=randread hocvps: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
Kết quả như sau
Starting 1 process
hocvps: Laying out IO file (1 file / 4096MiB)
Jobs: 1 (f=1): [r(1)][100.0%][r=374MiB/s,w=0KiB/s][r=95.8k,w=0 IOPS][eta 00m:00s]
hocvps: (groupid=0, jobs=1): err= 0: pid=25122: Sat Aug 22 15:07:30 2020
read: IOPS=94.4k, BW=369MiB/s (387MB/s)(4096MiB/11106msec)
bw ( KiB/s): min=350400, max=404864, per=99.91%, avg=377305.14, stdev=12665.99, samples=22
iops : min=87600, max=101216, avg=94326.18, stdev=3166.43, samples=22
cpu : usr=16.08%, sys=53.67%, ctx=59751, majf=0, minf=94
IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
issued rwts: total=1048576,0,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=64
Run status group 0 (all jobs):
READ: bw=369MiB/s (387MB/s), 369MiB/s-369MiB/s (387MB/s-387MB/s), io=4096MiB (4295MB), run=11106-11106msec
Ta có thể thấy IOPS=95.4k, đây là số lựơng tác vụ request có thể thực thi trong một giây
Kết quả sau khi mình đo ở 1 số hosting
IOPS | ||
---|---|---|
Digital Ocean | 95.4k | |
AWS | ||
vHost (Singapore) | 15.9k | |
vHost (VN) | 17.3k |
2. HDD/SSD
- SSD: Đây luôn là ưu tiên số 1 khi lựa chọn loại Disk cho server, SSD sẽ giúp tăng tốc đáng kể server của bạn so với HDD, đổng thời cũng hỗ trợ giúp memory buffer nếu hệ thống của bạn không có nhiều memory.
- HDD: Chỉ nên sử dụng để lưu trữ data backup để giảm chi phí
IV. Network
1. Traceroute
Trước khi thuê một VPS, chúng ta cần xác định đối tượng khách hàng để có routing phù hợp. Server càng gần khách hàng, thì sẽ ít số lượng hops sẽ phải đi qua.
- Khách Global & VN: server HK hoặc Singapore là lựa chọn phù hợp nhất
- Khách VN: Nên đặt server ở VN.
Chúng ta có thể sử dụng traceroute để kiểm tra số lượng hops từ server đế khách hàng.
Cài đặt như sau
yum install traceroute -y
Kiểm tra như sau
Server Digital Ocean
traceroute to api.wordpress.org (198.143.164.251), 30 hops max, 60 byte packets
1 178.128.16.254 (178.128.16.254) 1.295 ms 178.128.16.253 (178.128.16.253) 0.652 ms 178.128.16.254 (178.128.16.254) 0.653 ms
2 ae4-3101.sgp1-edge2.digitalocean.com (138.197.250.254) 0.790 ms ae5-3101.sgp1-edge1.digitalocean.com (138.197.250.252) 0.855 ms 0.898 ms
3 138.197.245.8 (138.197.245.8) 1.622 ms ae19.sg-sin01-edge2.digitalocean.com (138.197.245.14) 1.305 ms 138.197.245.0 (138.197.245.0) 1.152 ms
4 ix-ae-12-0.thar1.svq-singapore.as6453.net (120.29.214.141) 1.189 ms 1.151 ms 1.215 ms
5 if-ae-11-2.tcore1.svw-singapore.as6453.net (180.87.98.38) 191.986 ms 191.877 ms 181.464 ms
6 if-et-23-2.hcore2.kv8-chiba.as6453.net (180.87.67.33) 78.064 ms 78.940 ms if-ae-2-2.tcore2.svw-singapore.as6453.net (180.87.12.2) 172.708 ms
7 if-ae-20-2.tcore2.lvw-losangeles.as6453.net (64.86.252.216) 176.626 ms 179.646 ms if-ae-53-2.tcore2.lvw-losangeles.as6453.net (64.86.252.56) 178.416 ms
8 if-ae-2-2.tcore1.lvw-losangeles.as6453.net (66.110.59.1) 172.621 ms 168.920 ms 168.485 ms
9 64.86.197.99 (64.86.197.99) 172.080 ms 179.964 ms 172.498 ms
10 ae36.cr1-chi1.ip4.gtt.net (89.149.141.165) 208.281 ms 205.161 ms 212.790 ms
11 ip4.gtt.net (173.205.41.90) 227.835 ms 223.767 ms 222.227 ms
12 agg2.c13.r03.s101.chi03.singlehop.net (108.178.47.245) 218.636 ms 214.611 ms 218.602 ms
13 * * *
14 * * *
Server vHost VN
traceroute to api.wordpress.org (198.143.164.251), 30 hops max, 60 byte packets
1 103.92.30.10 (103.92.30.10) 0.198 ms 0.227 ms 0.133 ms
2 210.211.114.177 (210.211.114.177) 1.299 ms 1.286 ms 1.333 ms
3 210.211.112.221 (210.211.112.221) 1.267 ms 210.211.112.189 (210.211.112.189) 0.798 ms 210.211.112.169 (210.211.112.169) 1.093 ms
4 115.84.180.45 (115.84.180.45) 1.732 ms 115.84.180.41 (115.84.180.41) 8.714 ms 115.84.180.45 (115.84.180.45) 1.616 ms
5 203.113.186.209 (203.113.186.209) 1.568 ms 1.534 ms 203.113.186.211 (203.113.186.211) 1.484 ms
6 localhost (27.68.236.208) 37.316 ms localhost (27.68.236.105) 36.334 ms localhost (27.68.236.208) 36.154 ms
7 localhost (27.68.250.167) 33.575 ms 33.610 ms localhost (27.68.250.169) 32.537 ms
8 localhost (27.68.250.169) 32.325 ms 203.131.248.245 (203.131.248.245) 68.263 ms 68.217 ms
9 203.131.248.245 (203.131.248.245) 68.218 ms ae-12.r03.tkokhk01.hk.bb.gin.ntt.net (129.250.5.254) 178.733 ms 203.131.248.245 (203.131.248.245) 68.158 ms
10 ae-11.r24.tkokhk01.hk.bb.gin.ntt.net (129.250.6.99) 65.556 ms ae-12.r03.tkokhk01.hk.bb.gin.ntt.net (129.250.5.254) 176.756 ms ae-11.r24.tkokhk01.hk.bb.gin.ntt.net (129.250.6.99) 65.646 ms
11 ae-1.r25.tkokhk01.hk.bb.gin.ntt.net (129.250.2.115) 70.785 ms ae-10.r24.tkokhk01.hk.bb.gin.ntt.net (129.250.6.93) 65.414 ms 65.713 ms
12 ae-1.r25.tkokhk01.hk.bb.gin.ntt.net (129.250.2.115) 65.694 ms ae-7.r24.osakjp02.jp.bb.gin.ntt.net (129.250.2.42) 69.516 ms 71.935 ms
13 ae-4.r24.snjsca04.us.bb.gin.ntt.net (129.250.2.118) 172.869 ms ae-7.r24.osakjp02.jp.bb.gin.ntt.net (129.250.2.42) 71.336 ms ae-4.r24.snjsca04.us.bb.gin.ntt.net (129.250.2.118) 171.757 ms
14 ae-0.r25.snjsca04.us.bb.gin.ntt.net (129.250.3.147) 177.879 ms ae-4.r24.snjsca04.us.bb.gin.ntt.net (129.250.2.118) 167.033 ms ae-0.r25.snjsca04.us.bb.gin.ntt.net (129.250.3.147) 173.293 ms
15 ae-2.a00.snjsca04.us.bb.gin.ntt.net (129.250.3.58) 175.528 ms 175.198 ms 174.256 ms
16 ae7.mpr3.sjc7.us.zip.zayo.com (64.125.14.29) 202.428 ms 204.670 ms ae-2.a00.snjsca04.us.bb.gin.ntt.net (129.250.3.58) 177.620 ms
17 ae7.mpr3.sjc7.us.zip.zayo.com (64.125.14.29) 203.976 ms ae16.cr1.sjc2.us.zip.zayo.com (64.125.31.12) 203.211 ms ae7.mpr3.sjc7.us.zip.zayo.com (64.125.14.29) 205.709 ms
18 ae27.cs1.sjc2.us.eth.zayo.com (64.125.30.230) 253.107 ms 253.056 ms 259.452 ms
19 ae6.cs1.den5.us.eth.zayo.com (64.125.31.218) 254.008 ms 253.991 ms 261.287 ms
20 * * *
21 * ae11.er2.ord7.us.zip.zayo.com (64.125.26.251) 260.064 ms 251.022 ms
22 128.177.108.98.IPYX-142927-900-ZYO.zip.zayo.com (128.177.108.98) 255.480 ms 256.503 ms 261.208 ms
23 128.177.108.98.IPYX-142927-900-ZYO.zip.zayo.com (128.177.108.98) 255.070 ms 254.365 ms agg1.c13.r03.s101.chi03.singlehop.net (108.178.47.247) 239.832 ms
24 agg1.c13.r03.s101.chi03.singlehop.net (108.178.47.247) 243.935 ms * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
Kết luận, chúng tay phải mất 24 trạm để có thể đi từ VN sang server của WordPress.com,
Gói tin đi từ VN > Hongkong > Nhật > Mỹ
Tuy nhiên khi đặt ở Sing, chúng ta chỉ tốn 12 trạm để đến WordPress.com
Gói tin đi từ Singapore > Mỹ
2. MTR
Ngoài traceroute chúng ta cũng có thể sử dụng mtr để kiểm tra tỉ lệ lỗi trong việc truyền gửi gói tin .
Chúng ta có thể chạy command sau để kiểm tra tỉ lệ lỗi gói tin đến server WordPress.com
Cài đặt như sau
yum -y install mtr
Sử dụng như sau
mtr -n api.wordpress.org
Kết quả như sau
Host Loss% Snt Last Avg Best Wrst StDev
1. 103.92.30.10 0.0% 60 0.3 0.3 0.2 0.8 0.0
2. 210.211.114.177 0.0% 60 1.1 7.1 0.7 158.2 27.5
3. 210.211.112.157 0.0% 60 2.1 7.1 0.8 151.8 26.7
4. 115.84.180.45 0.0% 60 1.6 8.2 1.3 176.1 27.9
5. 203.113.186.211 0.0% 60 1.6 7.7 1.1 161.3 27.7
6. 27.68.236.105 0.0% 60 35.9 41.3 31.2 200.0 29.0
7. 27.68.250.169 0.0% 60 31.6 38.4 31.4 203.9 30.1
8. 203.131.248.245 0.0% 60 73.3 75.8 68.0 236.1 30.5
9. 129.250.5.254 0.0% 60 176.4 182.6 176.1 348.6 28.8
10. 129.250.6.99 0.0% 60 82.0 72.5 65.6 220.5 27.4
11. 129.250.2.115 67.8% 60 68.0 73.2 65.8 240.1 30.0
12. 129.250.2.42 67.8% 60 69.9 76.8 69.7 210.8 27.2
13. 129.250.2.118 67.8% 60 172.4 175.0 167.3 316.1 25.2
14. 129.250.3.147 67.8% 60 171.7 176.8 170.6 305.8 23.1
15. 129.250.3.58 67.8% 60 170.2 175.6 170.2 304.9 21.1
16. 64.125.14.29 67.8% 60 203.4 208.6 203.2 343.0 22.5
17. 64.125.31.12 67.8% 60 202.5 205.6 200.8 345.9 22.8
18. 64.125.30.230 67.8% 60 252.2 256.7 251.5 394.4 23.0
19. 64.125.31.218 67.8% 60 253.6 267.7 253.5 401.6 41.3
20. 64.125.29.18 91.4% 59 248.5 247.1 246.3 248.5 0.7
21. 64.125.26.251 0.0% 59 249.0 255.2 248.8 387.9 23.6
22. 128.177.108.98 0.0% 59 254.9 260.0 253.9 399.7 24.6
23. 108.178.47.247 0.0% 59 239.0 244.7 238.7 389.5 25.8
24. 198.143.164.251 0.0% 59 234.6 240.6 234.3 391.4 27.2
Theo như chúng ta thấy, tỉ lệ lỗi rất cao tại IP 129.250.2.115. Điều này có nghĩa là gói tin của chúng ta có vấn đề và bị drop tại Hops 129.250.2.115.
Theo như mình tìm hiểu, tất cả các VPS ở VN đều có limit băng thông quốc tế với gói cơ bản là 4Mpbs. Vì vậy khi băng thông quốc tế vượt ngưỡng thì sẽ bị giới hạn.
Do đó, IP 129.250.2.115 có thể là hops gateway quốc tế của nhà cung cấp VPS.
V. Hỗ trợ
Và cuối cùng, không kém phần quan trọng, đó là tốc độ & phạm vi hỗ trợ của mỗi nhà cung cấp khi xảy ra sự cố.
Sau đây là một số kinh nghiệm của mình
- Cloud: Không có hỗ trợ, mọi thứ về hạ tầng / zombie bạn phải tự xử lý.
- Nhà cung cấp hosting VN: Hỗ trợ khá tốt & nhanh