Bài này sẽ thuần túy so sánh hiệu năng và độ chịu tải của 4 sản phẩm là EasyEngine, Centmin Mod, RunCloud, Webinoly, bản chất nó là 1 đoạn script giúp bạn tự cài đặt một máy chủ web với Nginx, MariaDB, PHP, HTTP / 2 hoàn chỉnh
Để hạn chế chế chuyện sai sót, tất cả sẽ sử dụng VPS từ Google Cloud, cùng vị trí tại Oregon (cụ thể là us-east1-b)
Name | Hệ Điều Hành (64 Bit) | Cài đặt mặc định |
---|---|---|
Centmin Mod v123.09beta01 | CentOS 6.9 (64 Bit) | PHP v7.1.13, Nginx v1.13.8, MariaDB v10.1.30 |
EasyEngine v3.7.4 | Ubuntu 16.04 LTS (64 Bit) | PHP v7.0.26-2, Nginx 1.10.3, MariaDB v10.1.30 |
RunCloud v2.0.8 | Ubuntu 16.04 LTS (64 Bit) | PHP v7.2.0, Nginx v1.13.7, MariaDB v10.1.30 |
Webinoly v1.2.1 | Ubuntu 16.04 LTS (64 Bit) | PHP v7.1.12-3, Nginx v1.12.1, MariaDB v10.2.12 |
Phần cứng thì cấu hình chung như sau:
CPU : Intel (R) Xeon (R) @ 2.30GHz 1 core
Bộ nhớ RAM: 1 GB
HDD: 10 GB
Việc cài đặt 4 script này đều diễn ra như thông thường, sử dụng các thông số mặc định như họ tự tối ưu, sau khi cài đặt xong thì reboot 1 phát, bắt đầu tính từ lúc này 😀
Sau khi cài đặt 1 bản WordPress lên, thông số phần cứng như sau
Centmin Mod
CPU model : Intel(R) Xeon(R) CPU @ 2.30GHz Number of cores : 1 CPU frequency : 2300.000 MHz Total size of Disk : 10.8 GB (7.7 GB Used) Total amount of Mem : 996 MB (311 MB Used) Total amount of Swap : 1023 MB (0 MB Used) System uptime : 0 days, 3 hour 21 min Load average : 0.00, 0.03, 0.10 OS : CentOS 6.9 Arch : x86_64 (64 Bit) Kernel : 2.6.32-696.18.7.el6.x86_64 Date : Tue Jan 9 17:19:18 UTC 2018
EasyEngine
CPU model : Intel(R) Xeon(R) CPU @ 2.30GHz Number of cores : 1 CPU frequency : 2300.000 MHz Total size of Disk : 10.2 GB (2.3 GB Used) Total amount of Mem : 988 MB (263 MB Used) Total amount of Swap : 0 MB (0 MB Used) System uptime : 0 days, 3 hour 21 min Load average : 0.00, 0.01, 0.06 OS : Ubuntu 16.04.3 LTS Arch : x86_64 (64 Bit) Kernel : 4.13.0-1002-gcp Date : Tue Jan 9 17:19:21 UTC 2018
RunCloud
CPU model : Intel(R) Xeon(R) CPU @ 2.30GHz Number of cores : 1 CPU frequency : 2300.000 MHz Total size of Disk : 10.2 GB (4.5 GB Used) Total amount of Mem : 988 MB (173 MB Used) Total amount of Swap : 2047 MB (168 MB Used) System uptime : 0 days, 3 hour 20 min Load average : 0.00, 0.00, 0.02 OS : Ubuntu 16.04.3 LTS Arch : x86_64 (64 Bit) Kernel : 4.13.0-1002-gcp Date : Tue Jan 9 17:19:20 UTC 2018
Webinoly
CPU model : Intel(R) Xeon(R) CPU @ 2.30GHz Number of cores : 1 CPU frequency : 2300.000 MHz Total size of Disk : 10.2 GB (3.0 GB Used) Total amount of Mem : 988 MB (172 MB Used) Total amount of Swap : 1023 MB (84 MB Used) System uptime : 0 days, 3 hour 19 min Load average : 0.00, 0.01, 0.05 OS : Ubuntu 16.04.3 LTS Arch : x86_64 (64 Bit) Kernel : 4.13.0-1002-gcp Date : Tue Jan 9 17:19:19 UTC 2018
Tổng thể EasyEngine sử dụng space cho HDD và RAM ít nhất, với VPS 1GB RAM, họ còn không thèm tạo swap nữa (512 MB RAM thì EE có tạo swap), RunCloud thì ngược lại, tạo hẳn 2GB cho swap
Về space thì đa phần đều bình thường, không chiếm quá nhiều, trừ CentminMod, không hiểu họ cài gì mà dùng hết 7.7 GB
Cả 4 đều tối ưu rất tốt, CPU gần như đều loanh quanh 0-2% là hết cỡ
Kiểm tra tốc độ thì mình sẽ sử dụng dịch vụ monitor từ updown.io, cứ 15 giây kiểm tra 1 lần trên 8 server ở các nước, kiểm tra liên tục như thế trong khoảng 7h, điểm sẽ là trung bình của khoảng 1680 lần kiểm tra, mình nghĩ đây sẽ là con số chính xác, vì nó là số trung bình của tất cả các lần kiểm tra, sai số nếu có, mà tới 1680 lần thì cũng giảm đi xuống nhiều lắm rồi 😀
Bạn cứ hiểu, kết quả bên dưới là tốc độ truy cập của site khi có khoảng 8-10 người online cùng lúc là được
Centmin Mod đạt hiệu xuất tốt nhất, tốc độ trung bình trên 8 server là 510ms
Tiếp theo là EasyEngine với tốc độ trung bình trên 8 server là 532ms
Theo sau sát nút là Webinoly với tốc độ trung bình trên 8 server là 533ms
Ở cuộc thử nghiệm này, RunCloud đứng bét bảng với tốc độ trung bình trên 8 server là 546ms
Phân chia ra nói cho vui, chứ thực tế giữa tốt nhất và kém nhất, nó lệch chỉ 36ms (~0.03s) con số mà chẳng người nào thấy khác biệt nổi :]] Tuy thế, chuyện Centmin Mod nhanh hơn là chuyện có thật, nó đã phải vượt qua 1680 lần kiểm tra thì không thể là giả được :]] thực tế thì với điều kiện mạng Việt Nam trong tất cả các thử nghiệm trực tiếp của mình từ trình duyệt, Centmin Mod luôn là script cho ra con số TTFB tốt nhất ~ 250ms, các script khác thì trung bình ~ 500ms với server tại Oregon
Tiếp theo ta kiểm tra tốc độ khi nhiều người truy cập và timeout, các vấn đề lỗi phát sinh khi server quá tải, xem các script xử lý ra làm sao 😀
Để kiểm tra thì mình dùng loader.io để tạo các client kết nối thử nghiệm, trong lúc test sẽ dùng updown.io xem có bị downtime không 😀 phía client sẽ cài đặt WP Rocket và Rocket-Nginx
Bài test trong điều kiện 2.000 client mỗi giây liên tục trong 60s , sẽ thử lại 10 lần và lấy con số trung bình của 10 lần đó
Bắt đầu với CentminMod 😀
Thời gian phản hồi trung bình là 1006ms (1 s), tuy thế tỷ lệ thất bại do timeout và network cao kinh hoàng ~33%, có vẻ như Centmin Mod đi hướng tốc độ, tập trung vào từng client, với các client không quản lý nổi, họ xử lý bằng cách bỏ qua luôn, và ưu tiên tốc độ đạt được cho các kết nối thành công
Theo monitor từ updown.io thì để hoàn thành 10 lần test này, server bị downtime 2 phút, các lỗi bao gồm Connection Timeout, SSL connect error, TLS Handshake Timeout
20:58:10 (+07): DOWN from Montreal, Canada
▼ Connection Timeout (10 s) |
20:57:55 (+07): DOWN from Los Angeles, US
▼ SSL connect error (9.7 s) 104.196.156.252 |
20:57:38 (+07): DOWN from Frankfurt, Germany
▼ TLS Handshake Timeout (10 s) 104.196.156.252 |
20:57:01 (+07): DOWN (confirmation ⅔) from Gravelines, France
▼ Connection Timeout (10 s) |
Tiếp theo là EasyEngine
Thời gian phản hồi trung bình 4771 ms (~5 s) con số khá cao, tuy thế bù lại họ rất ít lỗi, chỉ khoảng 1.8% kết nối là bị lỗi timeout, không có lỗi liên quan tới network, cá nhân mình gặp 1 số vấn đề khi dùng VPS 512 MB RAM chạy EE là database error khi hết RAM, tuy thế trên VPS 1GB RAM thì không (hoặc chưa) gặp vấn đề này ở bài test, thực tế thì mặc dù vẫn là v3.7.4 nhưng EasyEngine có sửa 1 số thay đổi về config so với bản cài đặt v3.7.4 trước đây, mình cũng không chắc có phải họ đã fixed lỗi này rồi không nữa
Theo monitor từ updown.io thì hoàn thành 10 lần test này, server uptime 100% 😀
Tiếp theo là RunCloud, một cái tên chưa được nhiều người biết tới
Hmm, cách sử lý của RunCloud khá là lập dị, có vẻ khi xác định không chịu nổi nhiệt (cơ chế bảo vệ xác định đây là một cuộc tấn công???) thì họ xử lý là bỏ qua tất cả kết nối đó luôn, còn lại sẽ cố gắng đáp ứng đủ hết, kết quả là trong 10 lần chạy thử, thì nó đã sập ở 5 lần, các lần hoàn thành bài test tỷ lệ Success Resp cũng rất thấp, trong EE có ~ 40.000 kết nối thành công ở các bài test, thì con số này ở RunCloud cao nhất chỉ ~ 28.000. Theo monitor từ updown.io thì hoàn thành 10 lần test này, server uptime 100% 😀
Thật sự thì khi làm xong bài test về RunCloud, thiện cảm của mình dành cho họ về 0 :]]
OK, cuối cùng là Webinoly, một sản phẩm mà mình cực kì có thiện cảm và muốn gắn bó sử dụng lâu dài :]]
Thời gian phản hồi trung bình 4948 ms (~5 s) con số khá cao, tuy thế, tỷ lệ lỗi của nó cực ít, chỉ khoảng 0.04%, thật hết sức đáng tiếc, trong lần kiểm tra 7, nó không hoàn thành bài test được, nếu qua được bài test này thì mình đã có thể khẳng định ngay Webinoly là sản phẩm đáng dùng nhất ở bài so sánh này :((
Theo monitor từ updown.io thì hoàn thành 10 lần test này, server uptime 100% 😀
Thật sự thì từ lúc biết tới Webinoly mình đã có nhiều ấn tượng rất tốt đẹp, nó như là một phiên bản cải tiến của EasyEngine nhưng chạy các bản cập nhập mới hơn, và đặc biệt tính năng mình cực kì ưng ý khi chạy trên các VPS 512 MB RAM là nó không bao giờ bị tình trạng database error (hoặc nếu bị thì nó đã tự fixed ngay, bằng cách resert lại mysql), tuy thế, nó còn thiếu 1 chút ổn định để được như EasyEngine, hoàn thành 10 bài test như 1 😀 tuy thế test vẫn là test, thực tế thì sẽ không bao giờ có chuyện các VPS 1 GB RAM này có tới 2000 client online mỗi giây, nên chuyện nó sập như ở bài test là sẽ không có 😀
Chủ yếu họ sử lý các lỗi liên quan tới timeout và network phải nói rất tốt, ở bài test như tra tấn, vắt kiện hiệu năng như thế mà nó vẫn đảm bảo trong 1000 truy cập, chỉ có tầm 4 truy cập bị lỗi, các kết nối thành công rất cao
Tổng kết:
Điểm đầu tiên ta có thể thấy rõ ràng có sự khác biệt về tốc độ và hiệu năng trên mỗi sản phẩm, tùy thuộc vào cách người viết script và phía client config như thế nào
Tiếp theo, nếu huần túy tốc độ và hiệu quả sử dụng thực tế, Centmin Mod là số 1, hãy nghĩ đi, không phải lúc nào 1 site cũng có tới 2.000 truy cập mỗi giây, dùng Centmin Mod bạn vẫn có thể đáp ứng cho hơn 1000 người online cùng lúc mà vẫn đảm bảo tất cả các kết nối là nhanh nhất, dùng EasyEngine hay Webinoly trên lý thuyết thì bạn có thể đáp ứng số truy cập nhiều hơn, tuy thế khi đó mỗi truy cập lại chậm hơn gấp 5 lần, giữa việc làm hài lòng 1000 người và gây khó chịu cho 2000 người thì bạn chọn cái nào :]] thật ra site nào có 2000 người online mỗi giây thì bá cmnr, thiếu gì tiền mà update server :]] quan trọng là tất cả các kết nối đều nhanh mới khó chớ :]]
Thật ra chuyện EasyEngine và Webinoly sử lý được nhiều kết nối hơn, mình đánh giá không cao lắm, thường khi có khoảng 100-200 khách thường xuyên ghé site, bạn đã nên nâng cấp cho VPS rồi, nên chuyện EasyEngine và Webinoly tối ưu cực kì tốt cho các VPS 512 MB – 1GB RAM tính hiệu quả thực tế nó chưa cao, gần như chỉ để khoe trình
Về bản chất thì trừ RunCloud có bảng điều khiển riêng, EasyEngine, Centmin Mod và Webinoly đều na ná nhau, nếu muốn sử dụng thành thạo bạn đều phải đọc help từ trang chủ, google thêm và sự trợ giúp từ các end user khác, về điểm này thì Centmin Mod đang có 1 cộng đồng rất mạnh dễ hổ trợ, EasyEngine thì đã hơn 1 năm chưa có cập nhập gì, còn Webinoly càng tệ hơn, hiện tại chỉ có đúng 1 mình tác giả support :]]
Nếu thích đơn giản ăn ngay, bạn có thể dùng RunCloud, chỉ mất tầm nửa buổi là bạn đã có thể tìm hiểu xong, muốn sử dụng lâu dài, có niềm tin vào tác giả cập nhập tiếp thì có thể học sử dụng Centmin Mod dần
Dưới 1.000 client mỗi giây, 4 sản phẩm trên, tất cả đều tốt và tốc độ kết nối gần như nhanh nhất, lệch thì chỉ tính theo ms, con số không đáng kể, nên nếu truy cập site bạn dưới con sốnày, thì hãy lựa chọn 1 script mà mình thấy dễ sử dụng nhất, đơn giản nhất hoặc dễ tùy biến nhất, về điểm này thì RunCloud có điểm cộng rất nhiều 😀 cá nhân mình thì như đã nói ở trên á, mình vẫn dành thiện cảm rất nhiều cho EE và Webinoly 😛
Kết quả các bài test nó cũng không khác so với thực tế mình sử dụng lắm 😛
Tổng thiệt hại tạm tính cho bài viết này 😀
Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.
• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.
• ✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!