Tìm hiểu cách reverse proxy tiếp nhận và chuyển tiếp yêu cầu đến ứng dụng trên VPS. Bài viết hướng dẫn cấu hình Nginx cơ bản, kiểm tra hoạt động và xử lý một số lỗi thường gặp.
#Nginx
#Reverse Proxy
#VPS Linux
VVibeVPS
Sẵn sàng triển khai?
Đưa website của bạn lên Cloud VPS ngay hôm nay
Khởi tạo tự động ngay sau khi thanh toán, chuyển khoản bằng mã QR, bật tắt và cài lại máy chủ trong trang quản lý.
CPU tăng cao có thể khiến website phản hồi chậm, ứng dụng gián đoạn hoặc thao tác trên VPS bị trễ. Tuy nhiên, khởi động lại máy chủ ngay chưa chắc giải quyết được nguyên nhân: tiến trình gây tải có thể tiếp tục chạy sau khi VPS khởi động lại. Bài viết này hướng dẫn bạn kiểm tra mức sử dụng CPU, tìm chương trình bất thường và chọn cách xử lý an toàn trên Linux.
VPS quá tải CPU có biểu hiện gì?
Máy chủ VPS với dấu hiệu CPU hoạt động quá tải
Khi VPS quá tải CPU, website có thể tải chậm, xử lý yêu cầu lâu hoặc trả về lỗi theo từng thời điểm. Các tác vụ nền như sao lưu, gửi email, xử lý hàng đợi cũng có thể bị chậm. Khi đăng nhập SSH, bạn có thể thấy lệnh phản hồi chậm hoặc hệ thống báo tải cao.
Tuy vậy, load average cao không đồng nghĩa CPU chắc chắn đã dùng hết. Chỉ số này phản ánh số tiến trình đang chạy hoặc chờ tài nguyên trong một khoảng thời gian, còn mức độ đáng lo phụ thuộc vào số lõi CPU và tình trạng thực tế. Ngoài ra, tiến trình chờ ổ đĩa có thể làm load average tăng dù CPU không bận liên tục.
Vì vậy, trước khi xử lý, hãy kiểm tra đồng thời mức sử dụng CPU, số lõi, tiến trình đứng đầu và các chỉ số chờ tài nguyên. Nếu chỉ nhìn một con số rồi dừng dịch vụ, bạn có thể làm gián đoạn website mà vẫn không khắc phục được gốc rễ.
Kiểm tra CPU VPS bằng các lệnh cơ bản
Quản trị viên kiểm tra mức sử dụng CPU trên VPS
Đăng nhập VPS qua SSH bằng tài khoản có quyền phù hợp. Nếu có thể, hãy kiểm tra trong lúc hiện tượng chậm đang xảy ra để ghi nhận được tiến trình gây tải.
Xem tải hệ thống và số lõi CPU
Chạy lệnh:
uptime
Kết quả có các giá trị load average tương ứng với khoảng 1, 5 và 15 phút gần nhất. Để biết VPS có bao nhiêu lõi CPU, dùng:
nproc
Hãy đặt load average cạnh số lõi để đánh giá, thay vì kết luận chỉ từ một ngưỡng cố định. Ví dụ, tải gần mức số lõi có thể cho thấy CPU đang bận đáng kể; nếu tải vượt cao và kéo dài, cần tìm hiểu thêm. Đây chỉ là dấu hiệu định hướng, không thay thế việc xem tiến trình và trạng thái chờ.
Xem tiến trình dùng CPU theo thời gian thực
Lệnh top hiển thị các tiến trình đang hoạt động và mức tiêu thụ tài nguyên:
top
Trong giao diện, nhấn P để sắp xếp theo mức dùng CPU. Chú ý các cột %CPU, PID, USER và COMMAND. Nếu hệ thống đã cài htop, bạn có thể dùng lệnh này để xem biểu đồ từng lõi và thao tác trực quan hơn:
htop
Nếu chưa có htop, không nhất thiết phải cài thêm; top thường đã có sẵn. Khi thoát khỏi top, nhấn q.
Chụp nhanh danh sách tiến trình
Để xem các tiến trình dùng CPU nhiều nhất tại thời điểm kiểm tra:
ps -eo pid,ppid,user,%cpu,%mem,etime,cmd --sort=-%cpu | head -n 15
PID là mã tiến trình, PPID là mã tiến trình cha, còn ETIME cho biết thời gian tiến trình đã chạy. Ghi lại PID, tên lệnh và tài khoản chạy tiến trình trước khi thực hiện thao tác dừng. Lệnh này là ảnh chụp tại một thời điểm; nếu mức tải thay đổi nhanh, hãy quan sát thêm bằng top hoặc chạy lại sau một khoảng ngắn.
Tìm tiến trình bất thường và xác định nguyên nhân
Minh họa tìm tiến trình bất thường gây tải CPU VPS
Một tiến trình dùng CPU cao không nhất thiết là mã độc hay lỗi. Tác vụ nhập dữ liệu, tạo báo cáo, nén tệp hoặc xử lý lượng truy cập tăng đột biến đều có thể khiến CPU bận trong thời gian ngắn. Hãy xem tên chương trình, người dùng chạy, thời gian hoạt động và thời điểm bắt đầu tải để phân biệt tác vụ hợp lệ với dấu hiệu bất thường.
Đối chiếu PID với dịch vụ
Khi đã có PID, xem thêm thông tin bằng:
ps -fp PID
Thay PID bằng mã thực tế. Với dịch vụ được quản lý bởi systemd, có thể kiểm tra trạng thái bằng:
systemctl status ten-dich-vu
Thay ten-dich-vu bằng tên dịch vụ tương ứng, chẳng hạn dịch vụ web hoặc cơ sở dữ liệu. Nếu chưa biết tiến trình thuộc dịch vụ nào, kiểm tra đường dẫn lệnh, tài khoản chạy và nhật ký liên quan. Tránh chạy lệnh từ những hướng dẫn không rõ nguồn gốc hoặc xóa tệp chỉ vì tên lạ.
Phân biệt CPU bận với thời gian chờ
Trong màn hình top, dòng tổng hợp CPU có thể hiển thị các thành phần như us, sy, id, wa và st. us thường liên quan đến ứng dụng người dùng, sy là thời gian xử lý của nhân hệ điều hành, id là thời gian nhàn rỗi, wa là thời gian chờ I/O và st là thời gian CPU bị lấy khỏi máy ảo bởi máy chủ vật lý.
Nếu wa cao, vấn đề có thể nằm ở hoạt động đọc ghi ổ đĩa thay vì thiếu năng lực tính toán. Nếu st đáng kể và kéo dài, hãy lưu lại thông tin để kiểm tra thêm với đơn vị quản trị máy chủ. Không nên chỉ tăng số lõi CPU khi dấu hiệu chính là chờ ổ đĩa hoặc tài nguyên bên ngoài.
Những nguyên nhân thường gặp
Ứng dụng hoặc mã nguồn xử lý kém hiệu quả: vòng lặp liên tục, truy vấn nặng hoặc tác vụ không được tối ưu.
Lưu lượng truy cập tăng: nhiều yêu cầu đồng thời làm ứng dụng web và cơ sở dữ liệu phải xử lý nhiều hơn.
Tác vụ nền chạy trùng hoặc kéo dài: cron, sao lưu, đồng bộ, lập chỉ mục hay xử lý hàng đợi.
Cấu hình dịch vụ chưa phù hợp: số worker hoặc kết nối đồng thời quá lớn so với tài nguyên VPS.
Tiến trình bất thường: chương trình lạ, tiến trình tự khởi chạy lại hoặc hoạt động không khớp với lịch vận hành.
Cách xử lý CPU VPS cao an toàn
Sau khi nhận diện tiến trình, chọn cách xử lý dựa trên chức năng của nó. Trước khi dừng dịch vụ quan trọng, kiểm tra ảnh hưởng đến website, dữ liệu và người dùng; nếu có thể, lưu lại log và thời điểm xảy ra sự cố để phục vụ phân tích.
Với tác vụ hợp lệ nhưng chạy quá lâu
Nếu đó là tác vụ sao lưu, nhập dữ liệu hoặc xử lý báo cáo, kiểm tra xem nó có chạy đúng lịch và có bị khởi chạy lặp lại không. Có thể điều chỉnh lịch sang thời điểm ít truy cập, chia công việc thành các phần nhỏ hoặc giới hạn mức chạy song song. Không nên dừng giữa chừng nếu ứng dụng chưa hỗ trợ tiếp tục an toàn, vì tác vụ có thể tạo dữ liệu chưa hoàn chỉnh.
Với dịch vụ hoặc ứng dụng bị lỗi
Kiểm tra nhật ký ứng dụng và dịch vụ quanh thời điểm CPU tăng. Tìm yêu cầu lặp, lỗi truy vấn, tác vụ retry liên tục hoặc worker không kết thúc. Sau khi xác định vấn đề, sửa cấu hình hay mã nguồn và thử nghiệm trước khi đưa thay đổi lên môi trường đang phục vụ khách truy cập.
Nếu cần khởi động lại dịch vụ, dùng đúng tên dịch vụ và thực hiện sau khi cân nhắc ảnh hưởng:
sudo systemctl restart ten-dich-vu
Khởi động lại có thể giải phóng tình trạng kẹt tạm thời, nhưng không thay thế việc tìm nguyên nhân. Nếu tiến trình liên tục gây tải trở lại, cần xem log, cấu hình khởi chạy và lịch tác vụ.
Khi cần dừng tiến trình
Chỉ dừng tiến trình khi đã xác định được nó là gì và việc dừng không gây rủi ro cho dữ liệu. Ưu tiên dừng nhẹ bằng lệnh kill PID, sau đó kiểm tra trạng thái. Hạn chế dùng kill -9: lệnh này buộc kết thúc ngay, có thể khiến ứng dụng không kịp dọn dẹp tài nguyên hoặc hoàn tất thao tác đang thực hiện.
Nếu tiến trình lạ xuất hiện, không chỉ dừng nó rồi bỏ qua. Kiểm tra tài khoản chạy, vị trí tệp, tác vụ tự khởi động và nhật ký đăng nhập. Cân nhắc đổi thông tin xác thực, rà soát khóa SSH và cập nhật phần mềm nếu có dấu hiệu truy cập trái phép. Khi không chắc cách xử lý, hãy sao lưu dữ liệu quan trọng và nhờ người có chuyên môn kiểm tra.
Hạn chế tình trạng VPS quá tải CPU tái diễn
Theo dõi CPU vào thời điểm bình thường và khi website đông truy cập để nhận biết xu hướng. Có thể lưu lại lịch sử bằng công cụ giám sát hệ thống phù hợp, đồng thời ghi nhận thời điểm chạy cron, sao lưu và các đợt triển khai ứng dụng. Dữ liệu theo thời gian giúp phân biệt sự cố đột xuất với tình trạng thiếu tài nguyên kéo dài.
Một số việc nên làm định kỳ:
Rà soát cron và tác vụ nền, loại bỏ lịch trùng hoặc không còn sử dụng.
Cập nhật hệ điều hành, ứng dụng và các thành phần phụ thuộc theo quy trình an toàn.
Tối ưu truy vấn, bật bộ nhớ đệm phù hợp và tránh xử lý lặp không cần thiết.
Theo dõi cả CPU, RAM, ổ đĩa và lưu lượng mạng; các tài nguyên này có thể ảnh hưởng lẫn nhau.
Kiểm tra dung lượng worker và giới hạn kết nối để tránh tạo quá nhiều tiến trình đồng thời.
Khi nào nên nâng cấp tài nguyên VPS?
Nếu CPU thường xuyên ở mức cao trong thời gian dài, tải tăng đều theo lượng người dùng và ứng dụng đã được rà soát, có thể cần VPS có năng lực xử lý cao hơn. Trước khi nâng cấp, hãy đối chiếu số lõi hiện tại, mức tải giờ cao điểm, xu hướng sử dụng và yêu cầu thực tế của ứng dụng. Nếu CPU không phải nút thắt, nâng cấp CPU có thể không giải quyết được tình trạng chậm.
VibeVPS có các gói VPS AMD EPYC Gen 3 và VPS Platinum Gen 2, mỗi dòng gồm 16 gói từ 81.000đ/tháng. Bạn có thể tham khảo cấu hình phù hợp với nhu cầu; hãy cân nhắc dữ liệu giám sát và khả năng mở rộng trước khi thay đổi gói.
Kết luận
Để xử lý VPS quá tải CPU, hãy kiểm tra load average và số lõi, dùng top hoặc ps tìm tiến trình đứng đầu, rồi đối chiếu với dịch vụ và nhật ký trước khi hành động. Tối ưu ứng dụng, điều chỉnh tác vụ nền hay nâng cấp VPS đều có thể phù hợp, tùy nguyên nhân thực tế. Theo dõi định kỳ sẽ giúp bạn phát hiện sớm dấu hiệu bất thường và chọn hướng xử lý CPU VPS cao an toàn hơn.