1 million is so 2011
Bài tóm tắt WhatsApp 2012 2. Tăng trưởng Độ khó: Trung bình
WhatsApp · 2012 · 2. Tăng trưởng · Độ khó: Trung bình — bài gốc
Bối cảnh
- 1/2012. Vài tháng trước đó WhatsApp đã công bố 1 triệu kết nối TCP trên một máy; bài này là bản cập nhật.
- Bài rất ngắn, chủ yếu là số liệu và cấu hình, không kể lý do hay quá trình.
Thay đổi chính
- Hơn 2 triệu kết nối TCP đồng thời trên một máy (
kern.ipc.numopensockets= 2.277.845), mà CPU vẫn còn ~42% idle và còn ~27GB RAM trống. - Phần cứng: 2× Xeon X5675 (24 luồng), ~96GB RAM.
- OS: FreeBSD 8.2, chỉnh giới hạn kernel:
maxsockets2,4 triệu,maxfiles3 triệu, tăng kích thước bảng hash TCP. - Runtime: Erlang R14B03 (SMP 24 luồng).
Vì sao
Bài không giải thích. Có thể suy ra từ cấu hình (đây là suy luận của wiki, không phải lời WhatsApp): mô hình process nhẹ của Erlang hợp với việc giữ hàng triệu kết nối dài, chủ yếu ngồi chờ; còn giới hạn thực tế nằm ở các tham số kernel.
Bài học cho SWE
- Trước khi thêm máy, hãy đẩy một máy tới giới hạn thật. Phần lớn giới hạn mặc định của OS thấp hơn nhiều so với khả năng phần cứng.
- Chọn runtime theo bài toán: kết nối dài, nhiều, ít tính toán là đúng sở trường của BEAM. Discord cũng chọn BEAM cho cùng lý do (Discord 2017).
- Đọc bài này để biết con số, không phải để biết cách làm. Cần nguồn khác (ví dụ các bài nói về kiến trúc WhatsApp) để hiểu thêm.
Liên quan
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (1)