Dung dịch
Các mở tập tin
giới hạn có thể tăng.
… giới hạn cứng cho mỗi quá trình được đặt thành 1048576 theo mặc định nhưng có thể
đã thay đổi bằng cách sử dụng hệ thống "fs.nr_open". Từ: Hướng dẫn quản lý HAProxy | 5. Các giới hạn của bộ mô tả tệp
Tôi đã vấp phải một tài nguyên hữu ích về cách tăng fs.nr_open
. Đây là những gì tôi đã làm (trên máy chủ của mình):
# 0. ssh vào phiên bản đám mây của tôi
# 1. chuyển sang root
sudo su -
# 2. tăng giới hạn
sysctl -w fs.nr_open=2010000
# 3. lưu các thay đổi và thoát
sysctl -p
lối ra
# 4. bây giờ bạn đã quay lại vỏ người dùng; bạn cần đăng nhập lại
# từ shell này để các thay đổi có hiệu lực
lối ra
Lưu ý rằng những thay đổi được thực hiện không tồn tại sau khi khởi động lại. Nếu ai đó biết cách làm điều đó, vui lòng cho tôi biết và tôi sẽ chỉnh sửa câu trả lời của mình.
Tôi cũng cần nói với Docker rằng có thể mở hơn 1.048.576 tệp trong vùng chứa. Tôi đang sử dụng tệp Docker Compose để xác định các dịch vụ của mình. Tôi chỉ cần thêm đoạn mã sau vào docker-compose.yml
:
dịch vụ:
Ủy quyền:
hình ảnh: haproxy
# Bắt đầu đoạn trích
giới hạn:
không có tập tin:
mềm: 2005000
cứng: 2005000
# Kết thúc đoạn trích
#...
#...
Cuối cùng nhưng không kém phần quan trọng, hãy đảm bảo rằng phiên bản máy chủ có ít nhất 2GB RAM, nếu không bạn sẽ hết bộ nhớ khi cố gắng chạy proxy. Nếu bạn thực sự muốn xử lý 1 triệu yêu cầu bằng proxy của mình, bạn sẽ cần nhiều bộ nhớ hơn - khoảng từ 20 đến 30 GB - vui lòng tự kiểm tra. Nếu bạn biết cách tính giới hạn, vui lòng chỉnh sửa câu trả lời của tôi hoặc đăng nhận xét dưới đây!
Cơ sở lý luận về số lượng tệp đang mở
Nếu chúng tôi cần 2.000.029 tệp đang mở cho 1 triệu kết nối, thì hãy:
- đặt giới hạn vùng chứa proxy cao hơn một chút: 2.000.029 + 4971 = 2.005.000
- đặt giới hạn Hệ điều hành máy chủ cao hơn một chút: 2.005.000 + 5000 = 2.010.000