Giới hạn kích thước của / etc / hosts (Linux)


11

Có ai tình cờ biết giới hạn kích thước lý thuyết của / etc / hosts trên hệ thống Linux trước khi bạn có thể bắt đầu thấy sự suy giảm hiệu năng không?

Hơn nữa, bất cứ ai cũng có thể chỉ cho tôi một số nguồn chính thức cho biết giới hạn dự kiến ​​là gì?


8
Điều này khiến tôi nghĩ rằng bạn đang làm điều gì đó điên rồ hoặc CÁCH ngoài những cách thực hành tốt nhất. Các chi tiết là gì?
ewwhite

3
Chắc chắn có vẻ như triển khai một trình phân giải DNS nhẹ có thể là một giải pháp tốt hơn ở đây.
Zoredache

1
Tôi có một khách hàng yêu cầu điều này. Tôi đã hy vọng tìm thấy một số tài liệu mà tôi có thể chỉ cho họ tại sao điều này sẽ gây ra vấn đề; thay vì phải thử nó trên máy thử nghiệm và trình diễn nó.
MikeP90

1
Tệp máy chủ là một di tích của những ngày trước DNS của những năm 1970 và đầu những năm 1980. Có hàng trăm mục trong một tệp lưu trữ đã được công nhận là một ý tưởng tồi cho đến nay . Nếu bạn có hơn 10 mục trong mục của mình, có thể bạn đã đi sai hướng.
Michael Hampton

Câu trả lời:


9

Sử dụng nguồn , Mike.

Trình phân giải sử dụng tìm kiếm tuyến tính thông qua tệp văn bản để xác định vị trí các mục. Đó là một cơ sở dữ liệu không có chỉ mục. Vì vậy, trong trường hợp không có khả năng lưu trữ bổ sung, chi phí cho việc tra cứu sẽ là O (n). Khi nào điều đó sẽ dẫn đến sự suy giảm hiệu suất, đó là một câu hỏi không thể trả lời - nó trở nên chậm hơn với mỗi bản ghi.

Nếu bạn nói chuyện với một lập trình viên cơ sở dữ liệu hoặc quản trị viên, bạn sẽ nhận được các số liệu khác nhau cho điểm mà việc tra cứu chỉ mục (O (log2 (n)) rẻ hơn so với quét toàn bộ bảng, nhưng nhìn chung câu trả lời sẽ nằm trong vùng 20 đến 100 hồ sơ.

Bất kỳ hệ thống linux nào cũng cần giải quyết rất nhiều tên (không chỉ tên máy chủ). Nên chạy nscd hoặc tương tự. Hầu hết các bộ đệm như vậy sẽ tự lập chỉ mục dữ liệu sẽ vô hiệu hóa câu hỏi về hiệu năng, tuy nhiên ...

Nó không cung cấp phương tiện để quản lý các bộ dữ liệu phức tạp / lớn - nếu bạn có một máy chủ có nhiều địa chỉ IP, việc tra cứu qua tệp máy chủ sẽ luôn trả về mục nhập đầu tiên.


1
Để đóng vòng lặp, chúng tôi đã thêm 1,7 triệu bản ghi vào tệp máy chủ và đã ước tính rằng nó đã thêm 0,5 giây cho mỗi lần tra cứu. Trong môi trường này, 0,5 giây là không đáng kể. Tôi nghĩ rằng một máy chủ DNS vẫn là một giải pháp tốt hơn, nhưng khách hàng muốn những gì khách hàng muốn.
MikeP90

5

Một chút về lịch sử Internet - trước khi DNS được triển khai vào năm 1984, tệp máy chủ là duy nhất để giải quyết tên và không có nhiều máy chủ trên mạng - 325 vào tháng 2 năm 1983 (RFC 847) . Có những bản sao HOSTS.TXT (tuy nhiên không thể đọc được bằng máy) từ năm 1982 trong kho lưu trữ của nhà ảo thuật lịch sử internet . Thậm chí còn có một HOSTS.TXT thay thế (Geoff Goodfellow's) .


3

Về mặt kỹ thuật, không có giới hạn trên. Tuy nhiên, mọi tra cứu DNS sẽ đánh vào tệp này, vậy tại sao bạn lại để mở cho mình?

Để biết giá trị của nó, /etc/hoststệp lớn nhất tôi đã phân phối trong môi trường của mình là 1.200 dòng. Và nó hoạt động tốt cho ứng dụng mà tôi đang quản lý. DNS không phải là một lựa chọn trong môi trường cụ thể đó.


Hãy đặt nó theo một cách khác. Nếu không có lập chỉ mục trong kernel, mỗi lần nhấn sẽ thực hiện tìm kiếm tuyến tính, điều này phụ thuộc vào kích thước bộ đệm theo thời gian.
Deer Hunter

4
Tôi sử dụng một tập tin máy chủ phổ biến được tìm thấy trên internet, có 15.430 dòng và tôi nhận thấy không có sự suy giảm thực sự trong hiệu suất lướt web.
Bert

@DeerHunter Tôi không nghĩ có gì trong nhân Unix thực hiện tra cứu tên máy chủ.
Barmar

+1 để ghi chú của Bert. Tôi chỉ sử dụng một tệp tùy chỉnh với 22.000 dòng và nó không ảnh hưởng đến hiệu suất. Điều này rất hữu ích cho mục đích thử nghiệm!
Josh koenig
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.