Shared hosting hay VPS: Bạn nên chọn loại nào?
Shared hosting hay VPS? Khác biệt thật sự nằm ở quyền root và ai sửa server khi gặp lỗi. Xem khi nào shared hosting vẫn đủ và 4 dấu hiệu nên chuyển sang VPS.
Shared hosting và VPS: câu trả lời ngắn gọn
Shared hosting và VPS không phải là câu hỏi về tốc độ. Với shared hosting, bạn thuê một account trên máy do nhà cung cấp cấu hình và vá lỗi, đồng thời chia sẻ máy đó cho hàng trăm khách hàng. Với VPS (virtual private server), bạn thuê cả một hệ điều hành có quyền root, nên có thể cài những gì mình muốn và cũng phải tự sửa những gì mình làm hỏng.
Có 3 điểm khác biệt chính. Bạn có quyền root hoặc không. Bộ nhớ được cấp riêng cho bạn hoặc được mượn từ một pool dùng chung. Và khi server ngừng phản hồi lúc nửa đêm, nhà cung cấp sẽ sửa hoặc bạn phải tự sửa. Mọi tiêu chí trong bảng so sánh tính năng đều bắt nguồn từ 3 điểm này.
Nếu website của bạn chỉ gồm các trang, hình ảnh và form liên hệ, shared hosting là lựa chọn phù hợp và có chi phí thấp hơn. Nếu website cần một chương trình tiếp tục chạy ngay cả khi không có ai truy cập, bạn cần VPS.
Shared hosting thực sự cung cấp gì
Một máy chủ Linux chạy đồng thời nhiều account của khách hàng. Mỗi account có một thư mục home, một document root, một database và một mailbox. Một web server duy nhất, thường là Apache hoặc LiteSpeed, phục vụ mọi website trên máy chủ. Bạn dùng control panel thay cho shell prompt. Bạn không có quyền root, nên không thể cài package, mở port hoặc khởi động background service.
Hầu hết shared host chạy CloudLinux. CloudLinux đặt mỗi account vào một container riêng, với giới hạn cứng về thời gian CPU và số process có thể chạy cùng lúc. Vượt quá giới hạn process không làm website chậm đi. Thay vào đó, server trả về một trang lỗi có nội dung 508 Resource Limit Is Reached. Trang đó cho biết chính account của bạn đã chạm giới hạn, không phải một account khác chiếm phần tài nguyên của bạn.
Đây là một sự đánh đổi có chủ ý. Bạn từ bỏ quyền kiểm soát, đổi lại host sẽ patch kernel, cập nhật PHP, gia hạn certificate và duy trì backup hằng đêm. Với rất nhiều website, đây là một lựa chọn hợp lý.
VPS thực sự cung cấp cho bạn những gì
VPS là một máy ảo chạy trên máy chủ vật lý. Với KVM, hypervisor đứng sau phần lớn các gói Linux VPS, instance của bạn khởi động kernel riêng, có địa chỉ IP riêng, firewall riêng và hệ thống init riêng. sudo hoạt động. apt install hoạt động. Một chương trình bạn khởi động thông qua systemd sẽ tiếp tục chạy sau khi bạn đăng xuất, tự khởi động lại khi bị crash và hoạt động trở lại sau khi reboot.
Quyền truy cập root đó cũng là lý do bảo mật của máy trở thành trách nhiệm của bạn. Không có ai khác theo dõi máy. Phạm vi những thứ người ta chạy trên VPS rất rộng chính vì lý do này: máy có thể làm bất cứ việc gì mà một Linux server có thể làm.
Khác biệt 1: quyền truy cập root và những gì quyền này cho phép
Root là khác biệt tạo ra mọi khác biệt còn lại. Với quyền này, bạn có thể cài bất kỳ package nào từ distribution, bind bất kỳ port nào, viết một systemd unit, đọc mọi log trên máy và thay đổi thiết lập kernel bằng sysctl. Không có quyền này, bạn chỉ dùng được các tùy chọn mà panel cung cấp: bộ chọn phiên bản PHP, một tập extension cố định và form tạo cron job.
Trên VPS, bạn luôn có thể yêu cầu máy liệt kê các port đang có service listen:
ss -ltnpMỗi dòng là một socket đang mở cùng process sở hữu socket đó. Vì vậy, service khởi động thất bại sẽ xuất hiện dưới dạng một dòng bị thiếu. Trên shared hosting, câu hỏi này không có câu trả lời, vì port 80 và 443 thuộc về web server của host và bạn không thể dùng bất kỳ thứ gì mình viết để chiếm các port đó.
Bất đồng 2: bộ nhớ được cấp so với bộ nhớ đi mượn
Shared hosting được cung cấp dựa trên giả định rằng chỉ có một số ít account hoạt động nặng cùng lúc. Bộ nhớ trong máy là một pool, và phần bộ nhớ dành cho account của bạn là một giới hạn chứ không phải tài nguyên được giữ riêng. Khi dùng hết phần này, các tiến trình PHP sẽ bị kill và visitor nhận lỗi 500 hoặc 508.
Trên VPS, lượng bộ nhớ trong plan thuộc về instance của bạn. free -m hiển thị lượng bộ nhớ này, và không có process nào bên ngoài virtual machine có thể lấy nó đi.
Thời gian xử lý của CPU là ngoại lệ thực tế. Hầu hết plan VPS đều chia sẻ các core vật lý giữa nhiều guest, và bạn có thể tự đo mức này:
vmstat 1 5Cột st là steal time: tỷ lệ thời gian virtual processor của bạn đã sẵn sàng chạy nhưng physical core lại được cấp cho guest khác. Giá trị ổn định ở mức vài phần trăm là bình thường. Giá trị duy trì ở mức hai chữ số nghĩa là host đang bị cấp phát quá mức, và bạn có thể đưa con số này vào support ticket. Trên shared hosting không có số đo tương đương, vì mọi tool hiển thị nó đều cần root. Storage cũng hoạt động tương tự. Vì vậy, loại disk đứng sau một plan VPS rất quan trọng, và bạn nên tự đo một VPS mới trong tuần đầu thay vì tin vào trang bán hàng.
Khác biệt 3: ai chịu trách nhiệm khi có sự cố
Trên shared hosting, nhà cung cấp quản lý hệ điều hành, web server, bản build PHP, certificate và bản backup hằng đêm. Khi máy chủ ngừng phản hồi, bạn mở ticket và đã có người xử lý. Mặt khác, bạn không thể yêu cầu họ cài đặt những thành phần mà họ không hỗ trợ.
Trên VPS không được quản lý, nhà cung cấp quản lý hypervisor, network và nguồn điện. Mọi thứ từ kernel trở lên là trách nhiệm của bạn. Bạn phải tự xử lý security update, firewall, backup, gia hạn certificate và monitoring. Bộ phận hỗ trợ sẽ không đăng nhập để debug cấu hình web server của bạn. Hãy chuẩn bị ngay từ ngày đầu: mười phút đầu tiên trên một VPS mới, sau đó là một firewall mà bạn hiểu rõ, automatic security update và các bản backup mà bạn đã khôi phục thử ít nhất một lần.
Khi shared hosting là lựa chọn phù hợp
Website giới thiệu là trường hợp rõ nhất: một số trang, hình ảnh, form liên hệ, có thể thêm WordPress với plugin caching, và vài nghìn lượt truy cập mỗi ngày. Không có background job. Không có runtime đặc biệt. Không có dữ liệu nào phải được giữ trong bộ nhớ giữa các request. Shared hosting phục vụ tốt website này, có chi phí thấp hơn mọi VPS và giao việc bảo trì cho đội ngũ chuyên trách. Chuyển website sang VPS không đem lại lợi ích nào mà chỉ thêm một việc bạn chưa từng phải làm.
Có một trường hợp khác ít được chú ý hơn. Nếu không ai trong đội ngũ của bạn muốn đọc file log hoặc chạy apt upgrade, shared hosting là lựa chọn an toàn hơn. Một VPS chưa được cập nhật bản vá với cổng database mở sẽ gây hậu quả nghiêm trọng hơn một tài khoản shared hosting được chuyên gia duy trì và cập nhật thường xuyên. Quyền kiểm soát chỉ có lợi khi có người sử dụng nó.
Dấu hiệu 1: bạn cần một chương trình chạy liên tục
Daemon là chương trình nằm trong bộ nhớ và chờ công việc: API, chat bot, queue worker hoặc game server. Shared hosting chỉ chạy code của bạn khi có request đến. Mọi tiến trình bạn để chạy trong phiên SSH (secure shell) cũng bị dừng, vì tiến trình chạy lâu chiếm vào giới hạn số tiến trình của account.
Trên VPS, cùng chương trình đó trở thành một systemd unit:
sudo systemctl enable --now myapp
systemctl status myappsystemctl status phải in ra Active: active (running) cùng process ID. Nếu in ra Active: failed (Result: exit-code), lý do nằm trong journalctl -u myapp -n 50. Phần này hiển thị output của chính chương trình tại thời điểm nó dừng. Restart=always trong unit file sẽ khởi động lại chương trình sau khi crash, còn enable sẽ khởi động lại chương trình sau reboot. Viết systemd service và timer là kỹ năng VPS đầu tiên bạn nên học cho đúng.
Dấu hiệu 2: bạn cần một runtime mà panel không cung cấp
Panel chỉ cung cấp một danh sách. Nếu ứng dụng cần một phiên bản ngôn ngữ nằm ngoài danh sách đó, một library phải compile, ffmpeg, headless browser hoặc một database không phải MySQL, shared hosting không có chỗ để cài chúng. Cài software cần root, nhưng account không có compiler và development header, nên quá trình build fail trước khi tạo ra bất kỳ kết quả nào.
Trên VPS, bạn cài nó bằng apt install hoặc chạy nó trong container để giữ host sạch. Docker Compose trên VPS là cách thường dùng khi ứng dụng có nhiều hơn một thành phần cần phối hợp.
Dấu hiệu 3: cron job của bạn phải chạy đúng giờ
Shared host thường nhận cron job qua form và đặt khoảng thời gian tối thiểu, thường là 5 hoặc 15 phút. Một job chạy quá giới hạn CPU của account sẽ bị kill giữa chừng và âm thầm thất bại, vì không có gì ghi log mà bạn được phép đọc.
Trên VPS, crontab -e chấp nhận mọi lịch chạy bạn cấu hình, và systemd timer còn tốt hơn:
systemctl list-timers
journalctl -u cron -n 20list-timers hiển thị lần chạy tiếp theo và kết quả gần nhất của từng timer, còn cron log hiển thị từng command khi nó được thực thi. Khi một job không chạy, bạn có thể xác định nó chưa từng khởi động hay đã khởi động rồi thất bại. Phân biệt được hai trường hợp này là phần lớn công việc debug scheduled task.
Dấu hiệu 4: các tài khoản khác đang làm tăng thời gian phản hồi của bạn
Triệu chứng này khá rõ. Cùng một trang, không thay đổi code, phản hồi nhanh vào ban đêm nhưng chậm vào 7 giờ tối. Hãy đo từ chính máy của bạn trước khi đổ lỗi cho bên nào:
for i in $(seq 1 20); do curl -o /dev/null -s -w '%{time_starttransfer}\n' https://example.com/; sleep 5; donetime_starttransfer là thời gian từ lúc gửi request đến khi nhận được byte đầu tiên của response, tính bằng giây. Nếu 20 giá trị nằm gần nhau, server không phải là vấn đề; nguyên nhân nằm trong code hoặc các truy vấn database của bạn. Nếu các giá trị ổn định lúc 3am nhưng dao động thêm vài trăm mili giây vào giờ cao điểm, bạn đang dùng chung một máy bận với những account mà bạn không thể nhìn thấy. Đây là trigger duy nhất bạn không thể khắc phục bằng code tốt hơn, vì nguyên nhân nằm ở phía bên kia ranh giới giữa các account.
Chi phí thực tế khi chuyển sang VPS
Đây là mức giá niêm yết phổ biến vào tháng 8 năm 2026 cho gói nhỏ nhất trong từng nhóm. Hãy xem đây là mức tham khảo, không phải báo giá cố định, và kiểm tra giá hiện tại trước khi mua.
The data behind this chart
[
{
"plan": "Shared hosting",
"first_term_usd": 3,
"renewal_usd": 12
},
{
"plan": "VPS, 1 vCPU 1 GB",
"first_term_usd": 5,
"renewal_usd": 6
},
{
"plan": "VPS, 2 vCPU 4 GB",
"first_term_usd": 12,
"renewal_usd": 15
},
{
"plan": "Managed VPS, 2 vCPU 4 GB",
"first_term_usd": 25,
"renewal_usd": 30
}
]Khoảng chênh lệch ban đầu là từ 3 đến 5 đô la Mỹ mỗi tháng, nhưng đây không phải con số quyết định. Shared hosting thường quảng cáo mức giá cho kỳ hạn đầu tiên, với điều kiện thanh toán trước từ một đến ba năm, rồi gia hạn ở mức gần 12 đô la. So sánh giá gia hạn với giá gia hạn thì kết quả khác hẳn: 12 đô la cho tài khoản shared hosting so với 6 đô la cho một VPS cấp đầu vào.
Hãy cẩn thận khi so sánh, vì cấu hình của hai bên không tương đương. VPS 1 vCPU, 1 GB chạy web server và database trên cùng một máy nhỏ, nên sẽ nhanh chóng thiếu tài nguyên khi WordPress có lưu lượng thực tế. Mức tương đương hợp lý với gói shared hosting đã gia hạn là cấu hình 2 vCPU, 4 GB, có giá khoảng 15 đô la. Vì vậy, phần chi phí tăng thêm thực tế chỉ là vài đô la mỗi tháng, không phải gấp nhiều lần.
Chi phí lớn hơn không bao giờ xuất hiện trên hóa đơn. VPS cần khoảng một giờ để thiết lập, vài phút mỗi tháng cho việc cập nhật, và một buổi tối để xử lý lần đầu tiên có sự cố. Nếu tính theo đơn giá mỗi giờ của bạn, khoảng chênh lệch này nhanh chóng thu hẹp. Chi phí VPS trên thực tế phân tích chi tiết hơn về từng cấu hình.
Di chuyển website khỏi shared hosting mà không làm mất traffic
- Trước một ngày, giảm TTL (time to live) của DNS (domain name system) cho domain xuống 300 giây. Khi đó, việc chuyển đổi có hiệu lực trong vài phút thay vì vài giờ.
- Dựng server mới và bảo đảm website hoạt động trên địa chỉ IP của server trước khi thay đổi DNS.
- Sao chép các file, sau đó dump database và restore database trên server mới.
- Kiểm tra bằng file hosts trên laptop. File này chỉ trỏ domain đến IP mới trên máy của bạn.
- Cấp chứng chỉ TLS (transport layer security) trên server mới, thay đổi bản ghi A và giữ tài khoản shared hosting hoạt động trong một tuần.
dig example.com A +noall +answer
rsync -avz ~/public_html/ deploy@203.0.113.10:/srv/www/example.com/
mysqldump --single-transaction -u dbuser -p dbname > site.sqldig in TTL ở cột thứ hai trong kết quả, nên bạn có thể xác nhận giá trị mới đã có hiệu lực trước khi chuyển đổi. --single-transaction tạo snapshot nhất quán mà không khóa các table. Điều này quan trọng nếu website cũ vẫn đang nhận đơn hàng trong lúc bạn thực hiện chuyển đổi. Trên server mới, hãy cấu hình chứng chỉ ngay trong ngày đó: Cấu hình Let's Encrypt trên Ubuntu với nginx chỉ mất vài phút sau khi bản ghi DNS trỏ đến server mới.
Tài nguyên mà không phải tự chịu trách nhiệm
Nếu bốn dấu hiệu này đúng với site của bạn nhưng bạn không muốn tự bảo trì, managed VPS là lựa chọn trung gian. Bạn vẫn có dung lượng memory được cấp và quyền ở cấp root, còn nhà cung cấp chịu trách nhiệm patch, monitoring và thường cung cấp một panel. Biểu đồ trên cho thấy chi phí này khoảng 30 dollar, so với 15 cho unmanaged VPS cùng kích thước. Khoản chênh lệch này đổi lấy sự hỗ trợ của người khác khi server ngừng phản hồi vào ban đêm.
Quyết định chọn managed hay unmanaged VPS là phần nên đọc tiếp nếu bạn thuộc trường hợp này. Nếu bạn đã vận hành một VPS bận rộn nhưng steal time vẫn cao vào giờ cao điểm, bước tiếp theo là dedicated server hoàn toàn không có máy chủ lân cận.
FAQ
VPS có nhanh hơn shared hosting không?
Không phải lúc nào cũng vậy. Một shared server ít tải có thể nhanh hơn VPS 1 vCPU khi tải một trang WordPress đơn lẻ. VPS mang lại tính ổn định: dung lượng memory trong gói là của bạn, nên thời gian phản hồi phụ thuộc vào code của bạn thay vì account bận nhất trên máy chủ. Nếu trang chậm cả lúc 3am lẫn 7pm, nguyên nhân nằm ở code hoặc các truy vấn database; chuyển nguyên code đó sang VPS chỉ chuyển vấn đề theo.
Tôi có thể chạy app Node.js hoặc Python trên shared hosting không?
Đôi khi có, nhưng chỉ trong giới hạn hẹp. Một số panel khởi động application giúp bạn thông qua Passenger, và application chỉ chạy khi có request đến. Bạn không thể bind vào port riêng, vì web server của nhà cung cấp đang dùng 80 và 443. Bạn cũng không thể giữ worker trong memory giữa các request, vì giới hạn process của account sẽ dừng mọi process chạy lâu dài. Bot, queue worker hoặc websocket server cần VPS.
Tôi có cần biết Linux để chạy VPS không?
Có, nếu đó là VPS không được quản lý. Bạn cần SSH keys, firewall, quy trình update, backup và thói quen đọc log. Hãy dành 1 giờ cho lần thiết lập đầu tiên và vài phút mỗi tháng sau đó. Nếu bạn không muốn tự làm những việc này, gói managed vẫn cấp cho bạn các resource đã cam kết và giao phần bảo trì lại cho nhà cung cấp; đây là sự đánh đổi được trình bày trong VPS managed và unmanaged.
Website của tôi có bị downtime khi chuyển từ shared hosting sang VPS không?
Không, nếu bạn giảm DNS TTL trước và duy trì cả hai account hoạt động. Đặt TTL thành 300 giây trước 1 ngày, sao chép file và database, kiểm tra server mới thông qua hosts file trên laptop, rồi thay đổi A record. Trong vài phút, một số visitor sẽ truy cập server cũ và số khác truy cập server mới, vì vậy hãy giữ account shared hoạt động trong 1 tuần. Đặt website ở chế độ read-only trong lần dump database cuối cùng, hoặc chấp nhận mất dữ liệu được ghi trong khoảng thời gian đó.