Các lỗi mà lập trình viên hay mắc phải khi lập trình tool, job và prosess
Dưới đây là tổng hợp đầy đủ – chi tiết – thực tế các lỗi mà lập trình viên hay mắc phải khi viết tool, job, process (background jobs, batch, scheduled task, worker…). Danh sách này bao gồm cả lỗi logic, kỹ thuật, hiệu năng và vận hành.
✅ I. Lỗi về luồng xử lý (Process / Thread / Worker)
1. Không kiểm soát số lượng thread/process#
Tạo quá nhiều thread → treo server, hết RAM.
Không dùng thread pool, executor.
Job chạy song song nhưng tranh chấp tài nguyên.
2. Deadlock / Race Condition#
Nhiều thread truy cập chung một tài nguyên nhưng không lock.
Dùng synchronized sai chỗ.
Lock chéo (A lock B → B lock A → chết).
3. Không xử lý timeout#
Gọi API/DB mà không set timeout → job treo mãi.
Không có circuit breaker.
4. Không retry hoặc retry không giới hạn#
Không retry → job fail.
Retry vô hạn → loop vô tận, spam DB, spam API.
✅ II. Lỗi liên quan đến dữ liệu & database
5. Không commit/rollback transaction#
- Transaction mở nhưng không đóng → lock DB → gây treo.
6. Lấy quá nhiều dữ liệu 1 lần#
Dùng SELECT * lấy hàng triệu row → vỡ RAM.
Lỗi không phân trang → batch không kiểm soát.
7. Xử lý trùng dữ liệu#
- Job chạy 2 lần → xử lý cùng một record → tạo data ảo.
8. Không có cơ chế “idempotent”#
- Gọi lại job nhiều lần → kết quả sai (ví dụ tính tiền nhiều lần).
✅ III. Lỗi trong lập trình tool / batch
9. Không kiểm soát thời gian chạy của job#
- Job 1h chạy hết 2h → chồng lên job tiếp theo → crash.
10. Không log hoặc log quá nhiều#
❌ Không log: không biết lỗi ở đâu ❌ Log quá nhiều: đầy ổ cứng ❌ Không phân mức log: info/warn/error
11. Hardcode configuration#
URL DB, API key viết trực tiếp trong code.
Không dùng cấu hình (.env, config file).
12. Không validate input#
- Tool nhận file CSV → không kiểm tra format → fail toàn bộ.
13. Không catch exception đúng chỗ#
Để exception văng ra làm chết toàn bộ process.
Catch chung chung nhưng không xử lý triệt để.
14. Không kiểm tra file tồn tại / quyền truy cập#
- Xử lý file nhưng không check file tồn tại → lỗi runtime.
✅ IV. Lỗi về hiệu năng & tài nguyên
15. Rò rỉ bộ nhớ (Memory Leak)#
Mở stream/connection rồi không đóng.
Lưu cache không clear.
Dùng thư viện lớn trong vòng lặp.
16. Đọc file lớn vào RAM 1 lần#
File 10GB mà đọc nguyên file → OOM.
Không dùng streaming.
17. Không kiểm soát CPU#
Vòng lặp vô hạn.
Dùng thuật toán không tối ưu.
✅ V. Lỗi khi dùng job scheduler (cron, Quartz, Spring Scheduler, Jenkins)
18. Cron chạy sai giờ#
Lỗi múi giờ.
Cron pattern sai.
19. Job chạy nhưng không có thông báo#
Không gửi email/slack khi job fail.
Không có monitoring job.
20. Không khóa job khi đang chạy#
2 job chạy song song → conflict.
Thiếu cơ chế distributed lock (Redis, DB, Quartz).
✅ VI. Lỗi khi triển khai (deploy & vận hành)
21. Không tách môi trường DEV / TEST / PROD#
Dùng API key thật trong dev.
Gửi thông báo thật khi test.
22. Không chuẩn bị cơ chế restart / resume#
Job fail giữa chừng → chạy lại từ đầu.
Không có checkpoint.
23. Không làm job “stateless”#
- Job phụ thuộc vào state trong RAM → restart là mất.
✅ VII. Lỗi quản lý file / thư mục / input-output
24. Không kiểm tra encoding#
- CSV UTF-8 đi vào tool Latin1 → lỗi chữ.
25. Không xử lý ngoại lệ khi ghi file#
- Dung lượng disk full → ghi hỏng.
✅ VIII. Lỗi bảo mật
26. Lộ API key / token trong log#
- Log cả header Authorization → lộ token.
27. Không giới hạn quyền#
- Tool có thể đọc/xóa toàn bộ file mà không cần quyền.
🔥 IX. Lỗi logic nghiệp vụ
28. Job không dừng đúng cách#
Dùng
Thread.sleep()lung tung.Không có cơ chế graceful shutdown.
29. Lặp vô tận do quên tăng index#
while (i < size) { // thiếu i++ }
30. Không test kỹ trước khi chạy thật#
Không dùng dữ liệu mẫu.
Test trực tiếp trên production.
2 phản hồi
Bài liên quan trong #Học Lập Trình
-
Mẹo dùng claude code desktop với dự án lớn
minhdev -
Hướng dẫn cài docker trên ubuntu 24
minhdev -
Hướng dẫn đầy đủ về cách cài và dùng Claude trên PC, kèm các mẹo hay!
minhdev · 💬 1 -
Cách xây dựng API cho CMS bằng Java từ A-Z
minhdev · 💬 1 -
Dể xây dựng phần mềm quản lý tài sản cho 1 doanh nghiệp ta cần làm gì
minhdev