Odoo
Khi Nào Cần Fix WebSocket Timeout Trong Odoo: Hướng Dẫn Chi Tiết
Hướng dẫn chi tiết về WebSocket timeout trong Odoo: Khi nào cần fix, các dấu hiệu nhận biết, và cách tối ưu hóa cho hệ thống có nhiều người dùng đồng thời.
AT
Anh Trần
January 26, 2026
12 min read
26 views
# Khi Nào Cần Fix WebSocket Timeout Trong Odoo: Hướng Dẫn Chi Tiết
Khi làm việc với các hệ thống Odoo, WebSocket timeout có thể gây ra các vấn đề không nhỏ, đặc biệt khi có nhiều người dùng kết nối đồng thời hoặc khi sử dụng các tính năng realtime như chat, thông báo, và POS. Trong bài viết này, chúng ta sẽ tìm hiểu về WebSocket timeout, khi nào cần phải khắc phục và các phương pháp tối ưu hóa hiệu quả trong các dự án Odoo.
## WebSocket Timeout Là Gì?
WebSocket là một giao thức mạng cho phép duy trì kết nối liên tục giữa client và server, giúp việc truyền tải dữ liệu theo thời gian thực trở nên dễ dàng và nhanh chóng. Trong Odoo, giá trị mặc định cho `websocket_keep_alive_timeout` là **3600 giây** (60 phút). Điều này có thể dẫn đến việc quá nhiều người dùng kết nối đồng thời, khiến hệ thống gặp phải các lỗi như mất kết nối, lỗi cơ sở dữ liệu và giảm trải nghiệm người dùng.
## Khi Nào Cần Fix WebSocket Timeout?
### ✅ Dự Án CẦN Fix (Priority High)
Dưới đây là một số dấu hiệu cho thấy dự án của bạn **cần phải fix** WebSocket timeout:
**1. Nhiều người dùng online cùng lúc (20+ users):**
- Công ty lớn, số lượng người dùng đông
- Nhiều người dùng làm việc cùng ca, trong giờ cao điểm (8-9h sáng)
- Lỗi xuất hiện khi có từ 50-100+ kết nối đồng thời
**2. Lỗi cập nhật cơ sở dữ liệu cao:**
- Lỗi "could not serialize access due to concurrent update"
- Xuất hiện từ 10-30 lỗi mỗi ngày, đặc biệt vào giờ cao điểm
**3. Người dùng phản ánh kết nối không ổn định:**
- Thông báo "Kết nối bị mất, đang cố gắng kết nối lại..."
- Thông báo và tin nhắn chậm hoặc bị bỏ lỡ
**4. Tài nguyên máy chủ thấp:**
- Chỉ có 1-2 CPU cores, 2-4GB RAM
- Được lưu trữ trên hosting chia sẻ hoặc VPS nhỏ
**5. Sử dụng nhiều tính năng realtime:**
- Chat Odoo, Thông báo, POS, Cập nhật theo thời gian thực
**Ví dụ:** Dự án cho công ty 50-100 nhân viên, sử dụng POS, Chat, CRM, và Sales. Máy chủ có 2 CPU và 4GB RAM với khoảng 20-30 lỗi mỗi ngày.
### ⚠️ Dự Án NÊN Fix (Priority Medium)
Các dấu hiệu cho thấy bạn **nên fix** WebSocket timeout:
**1. 10-20 người dùng đồng thời:**
- Công ty vừa phải, với người dùng login rải rác
**2. Lỗi cơ sở dữ liệu ở mức thấp đến trung bình:**
- Lỗi từ 5-10 mỗi ngày, chưa gây ảnh hưởng lớn nhưng có xu hướng tăng
**3. Tài nguyên máy chủ ổn nhưng không dư dả:**
- 2-4 CPU cores, 4-8GB RAM
**4. Kế hoạch mở rộng người dùng:**
- Hiện tại ít người dùng, nhưng có kế hoạch mở rộng trong tương lai
**Ví dụ:** Dự án cho công ty với 20-30 nhân viên và máy chủ 2 CPU, 6GB RAM. Có từ 5-10 lỗi mỗi ngày và kế hoạch tuyển thêm nhân viên.
### ❌ Dự Án KHÔNG CẦN Fix (Priority Low/None)
Đối với các dự án **không cần phải fix** WebSocket timeout:
**1. Ít người dùng (<10 users):**
- Các công ty nhỏ hoặc startup với ít người dùng trực tuyến đồng thời
**2. Không có lỗi cơ sở dữ liệu:**
- Hệ thống ổn định, không có lỗi "could not serialize"
**3. Người dùng login rải rác:**
- Không có tình trạng login đồng loạt
**4. Ít sử dụng tính năng realtime:**
- Chỉ sử dụng các tính năng cơ bản như CRM, Sales
**5. Máy chủ mạnh và tài nguyên dư dả:**
- Có từ 4-8 CPU cores và 8-16GB RAM
**Ví dụ:** Dự án cho công ty startup nhỏ với 5-10 người, máy chủ 4 CPU và 8GB RAM, sử dụng CRM và Sales cơ bản.
## So Sánh Trước và Sau Khi Fix
| Metric | Trước Khi Fix (3600s) | Sau Khi Fix (600s) | Ảnh Hưởng |
|--------|----------------------|-------------------|-----------|
| Lifetime kết nối | 60-90 phút | 10-15 phút | Giảm kết nối bị ngắt |
| Mẫu reconnect | Đồng bộ | Lan tỏa | Giảm xung đột cơ sở dữ liệu |
| Lỗi cơ sở dữ liệu | 20-30/ngày | 0-5/ngày | Giảm 90% lỗi |
| Trải nghiệm người dùng | Không ổn định | Ổn định, seamless | Tốt hơn |
| Tải máy chủ | Trung bình | Trung bình+ | Tăng nhẹ |
## Ưu và Nhược Điểm Của Giải Pháp
### ✅ Ưu Điểm
1. **Giảm lỗi cơ sở dữ liệu:** Lỗi giảm từ 20-30 xuống chỉ còn 0-5 mỗi ngày
2. **Trải nghiệm người dùng ổn định:** Không còn thông báo "Kết nối bị mất", các tin nhắn, thông báo đồng bộ tốt hơn
3. **Dễ triển khai và khôi phục:** Chỉ cần thay đổi một dòng config và restart container
4. **Sẵn sàng sản xuất:** Được khuyến nghị bởi cộng đồng Odoo, đã được kiểm tra trên nhiều môi trường sản xuất
### ❌ Nhược Điểm
1. **Tăng tần suất reconnect (~6 lần):** Tăng từ 1 reconnect/giờ lên 6 reconnect/giờ
2. **Tăng overhead mạng:** Mỗi reconnect tốn khoảng 1-2KB, có thể tạo ra một số overhead nhỏ
3. **Delay reconnect nhỏ:** Người dùng có thể thấy "reconnecting..." trong vài giây, ảnh hưởng rất nhỏ nhưng vẫn có thể nhận ra
4. **Tăng tải máy chủ nhẹ:** Tải CPU tăng khoảng 5-10%, không đáng kể trên các máy chủ có hơn 2 CPU cores
## Kết Luận
Việc giảm giá trị `websocket_keep_alive_timeout` xuống **600 giây** sẽ giúp giảm đáng kể các lỗi đồng bộ hóa cơ sở dữ liệu, cải thiện trải nghiệm người dùng và ổn định hệ thống. Dù có một số nhược điểm nhỏ về overhead mạng và tần suất reconnect tăng lên, nhưng đây là một giải pháp hiệu quả và dễ triển khai cho các dự án Odoo, đặc biệt là những dự án có nhiều người dùng và sử dụng các tính năng realtime.
## Khuyến Nghị
- **Dự án nhỏ (<10 users):** Giữ mặc định 3600s hoặc không cần fix
- **Dự án vừa phải (10-20 users):** Sử dụng 900s (15 phút)
- **Dự án lớn (20-50 users):** Dùng 600s (10 phút), là "sweet spot"
- **Dự án rất lớn (>50 users):** Cũng có thể sử dụng 600s hoặc tùy chỉnh lại theo nhu cầu
Giải pháp tối ưu nhất vẫn là thay đổi cấu hình `websocket_keep_alive_timeout = 600`, vì nó giúp duy trì sự ổn định của hệ thống mà không tốn quá nhiều tài nguyên mạng.
## Cách Triển Khai
Để áp dụng giải pháp này, bạn chỉ cần thêm dòng sau vào file cấu hình Odoo:
```conf
[options]
websocket_keep_alive_timeout = 600
```
Sau đó restart lại Odoo service:
```bash
# Với Docker
docker-compose restart odoo
# Với systemd
sudo systemctl restart odoo
```
Theo dõi logs để đảm bảo cấu hình được áp dụng thành công và hệ thống hoạt động ổn định.
AT
About Anh Trần
Full-Stack Developer & Project Manager with 10+ years of experience. Specializing in Odoo ERP, Laravel, IoT and real-time systems.
Comments (0)
Sign in to comment
Loading...