cái này nó tuỳ thuộc vào độ phình to của 1 website , với 1 web bt , số lượng trang ko tăng , thì lưu lượng để làm nó bị chậm là rất lớn và gần như ko bị ảnh hưởng
còn với 1 web như mmo thì số lượng bìa đăng , thanh viên tăng từng ngày + với lượt truy cập tăng thì việc nó chậm là dễ hiểu thôi
truy cập thì tăng đều , dung lượng thì phình to mỗi ngày mỗi giờ có thể liên tưởng với độ khó khi đào bitcoin
Bác đang hiểu hơi lệch ý em rồi. Cái này thực ra là vấn đề
Initial Load của website.
Nghĩa là khi một người dùng mới truy cập vào web, lúc đó CDN, JS, API…
chưa được load sẵn, hệ thống phải xử lý từ bước ban đầu. Trong quá trình initial load đó, server sẽ
query dữ liệu từ CSDL để render HTML trả về cho frontend.
Nên nó không liên quan gì tới chuyện lưu lượng truy cập tăng hay giảm cả.
Vấn đề cốt lõi ở đây là:
Khi vừa vào web phải chờ 20–30 giây, thậm chí cả phút web mới chạy. Cái này trước tiên liên quan đến
server xử lý chậm, và sâu hơn nữa là
query CSDL chưa được tối ưu.
Thường thì khi dữ liệu càng nhiều, rất dễ dính phải
N+1 Query Problem. Lúc đó database bị nghẽn cổ chai, phải xử lý quá nhiều query liên tiếp, dẫn đến thời gian chờ lâu rồi mới trả được dữ liệu về cho web.
Nên với trường hợp forum này, khả năng cao là
dính N+1 ở tầng query.
Vì vậy dù có
nâng server lên cấu hình khủng cỡ nào đi nữa mà không xử lý phần query thì vẫn chậm như thường dẫn đến web kém ổn định, đây không phải vấn đề lần đầu mà thời gian dài rồi.
Chứ thật sự traffic 1 tháng của Forum e đo thì khoảng tầm gần 200k traffic/tháng, em cứ cho tròn 200K/tháng thì ngày được khoảng > 6k traffic thì đây là số traffic quá ít không quá đáng kể để gây ra hiện tượng load chậm thế.
# Update thêm
Admin nên sử dụng cache cho các query CSDL để hạn chế việc truy vấn quá mức, đặc biệt khi có nhiều người truy cập cùng lúc. Việc để nhiều user cùng query một dữ liệu giống nhau vừa tốn tài nguyên, vừa không hiệu quả, vì kết quả trả về vẫn chỉ là một dữ liệu duy nhất.
Đặc biệt với người dùng khi truy cập trang home, hệ thống thường phải load rất nhiều dữ liệu như: danh sách thread, category, các chỉ số COUNT… Nếu mỗi user đều query trực tiếp vào CSDL thì khi đông người truy cập sẽ gây tải lớn cho database.
Giải pháp là sử dụng Redis để cache dữ liệu. Khi đó, thay vì 1000 người query CSDL 1000 lần, hệ thống chỉ cần query 1 lần, lưu kết quả vào Redis và các user sau chỉ việc lấy dữ liệu từ cache.
Khi có dữ liệu mới (ví dụ: có post/comment mới làm thread lên top), hệ thống sẽ invalidate và cache lại dữ liệu ngay lập tức, giúp người dùng truy cập sau thấy dữ liệu mới ngay, mà không cần query trực tiếp vào CSDL.