Cách đặt giới hạn bộ nhớ cho vùng chứa Docker

[ad_1]

Sửa máy tính tại nhà TPHCM

Các vùng chứa Docker mặc định chạy mà không có bất kỳ ràng buộc nào về tài nguyên. Các quá trình chạy trong vùng chứa được tự do sử dụng lượng bộ nhớ vô hạn, có khả năng ảnh hưởng đến các vùng chứa lân cận và các khối lượng công việc khác trên máy chủ của bạn.

Điều này là nguy hiểm trong môi trường sản xuất. Mỗi vùng chứa phải được cấu hình với một giới hạn bộ nhớ thích hợp để ngăn chặn việc tiêu thụ tài nguyên khi chạy. Điều này giúp giảm bớt sự tranh chấp, điều này sẽ tối đa hóa sự ổn định tổng thể của hệ thống.

Cách hoạt động của giới hạn bộ nhớ Docker

Docker cho phép bạn đặt giới hạn bộ nhớ cứng và mềm trên các vùng chứa riêng lẻ. Những điều này có ảnh hưởng khác nhau đến dung lượng bộ nhớ khả dụng và hành vi khi đạt đến giới hạn.

  • Giới hạn bộ nhớ cứng đặt giới hạn tuyệt đối cho bộ nhớ được cung cấp cho vùng chứa. Vượt quá giới hạn này thông thường sẽ làm cho bộ tiêu diệt hết bộ nhớ của nhân chấm dứt quá trình vùng chứa.
  • Giới hạn bộ nhớ mềm cho biết lượng bộ nhớ mà một vùng chứa dự kiến ​​sẽ sử dụng. Vùng chứa được phép sử dụng nhiều bộ nhớ hơn khi có dung lượng. Nó có thể bị chấm dứt nếu vượt quá giới hạn mềm trong điều kiện bộ nhớ thấp.

Docker cũng cung cấp các điều khiển để thiết lập các giới hạn bộ nhớ hoán đổi và thay đổi những gì sẽ xảy ra khi đạt đến giới hạn bộ nhớ. Bạn sẽ thấy cách sử dụng chúng trong các phần sau.

Đặt giới hạn bộ nhớ cứng và mềm

Giới hạn bộ nhớ cứng được thiết lập bởi docker run lệnh của -m hoặc --memory lá cờ. Nó có một giá trị chẳng hạn như 512m (cho megabyte) hoặc 2g (cho gigabyte):

$ docker run --memory=512m my-app:latest

Vùng chứa có yêu cầu bộ nhớ tối thiểu là 6MB. Đang cố gắng sử dụng --memory giá trị nhỏ hơn 6m sẽ gây ra lỗi.

Giới hạn bộ nhớ mềm được đặt với --memory-reservation lá cờ. Giá trị này cần phải thấp hơn --memory. Giới hạn sẽ chỉ được thực thi khi xảy ra tranh chấp tài nguyên vùng chứa hoặc máy chủ sắp hết bộ nhớ vật lý.

$ docker run --memory=512m --memory-reservation=256m my-app:latest

Ví dụ này bắt đầu một vùng chứa có 256MB bộ nhớ dành riêng. Quá trình có thể bị chấm dứt nếu nó sử dụng 300MB và dung lượng sắp hết. Nó sẽ luôn dừng nếu sử dụng vượt quá 512MB.

Quản lý bộ nhớ hoán đổi

Các thùng chứa có thể được cấp phát bộ nhớ hoán đổi để đáp ứng mức sử dụng cao mà không ảnh hưởng đến việc tiêu thụ bộ nhớ vật lý. Swap cho phép ghi nội dung của bộ nhớ vào đĩa sau khi bộ nhớ RAM khả dụng đã cạn kiệt.

Các --memory-swap cờ kiểm soát lượng không gian hoán đổi có sẵn. Nó chỉ hoạt động cùng với --memory. Khi bạn đặt --memory--memory-swap thành các giá trị khác nhau, giá trị hoán đổi kiểm soát tổng dung lượng bộ nhớ có sẵn cho vùng chứa, bao gồm cả không gian hoán đổi. Giá trị của --memory xác định phần dung lượng đó là bộ nhớ vật lý.

$ docker run --memory=512m --memory-swap=762m my-app:latest

Vùng chứa này có quyền truy cập 762MB bộ nhớ trong đó 512MB là RAM vật lý. 250MB còn lại là không gian hoán đổi được lưu trữ trên đĩa.

Cài đặt --memory không có --memory-swap cấp cho vùng chứa quyền truy cập vào cùng một lượng không gian hoán đổi như bộ nhớ vật lý:

$ docker run --memory=512m my-app:latest

Vùng chứa này có tổng cộng 1024 MB bộ nhớ, bao gồm 512 MB RAM và 512 MB trao đổi.

Hoán đổi có thể bị vô hiệu hóa cho một vùng chứa bằng cách đặt --memory-swap gắn cờ có cùng giá trị với --memory. Như --memory-swap đặt tổng dung lượng bộ nhớ và --memory phân bổ tỷ lệ bộ nhớ vật lý, bạn đang hướng dẫn Docker rằng 100% bộ nhớ khả dụng phải là RAM.

Trong mọi trường hợp, hoán đổi chỉ hoạt động khi nó được bật trên máy chủ của bạn. Báo cáo hoán đổi bên trong các vùng chứa là không đáng tin cậy và không nên được sử dụng. Các lệnh như free được thực thi trong một vùng chứa sẽ hiển thị tổng số không gian hoán đổi trên máy chủ Docker của bạn, không phải vùng hoán đổi có thể truy cập vào vùng chứa.

Vô hiệu hóa xử lý ngoài bộ nhớ giết chết

Lỗi hết bộ nhớ trong một vùng chứa thường khiến hạt nhân kết thúc quá trình. Điều này dẫn đến việc vùng chứa dừng lại với mã thoát 137.

Bao gồm cờ tùy chọn --oom-kill-disable với bạn docker run lệnh vô hiệu hóa hành vi này. Thay vì dừng quá trình, hạt nhân sẽ chỉ đơn giản là chặn cấp phát bộ nhớ mới. Quá trình sẽ bị treo cho đến khi bạn giảm mức sử dụng bộ nhớ của nó, hủy cấp phát bộ nhớ mới hoặc khởi động lại vùng chứa theo cách thủ công.

Không nên sử dụng cờ này trừ khi bạn đã tự triển khai các cơ chế để giải quyết tình trạng hết bộ nhớ. Thông thường, tốt hơn là để hạt nhân giết quá trình, gây ra khởi động lại vùng chứa để khôi phục mức tiêu thụ bộ nhớ bình thường.

Bản tóm tắt

Docker container đi kèm không có các ràng buộc tài nguyên được áp dụng trước. Điều này khiến các quy trình vùng chứa được tự do sử dụng bộ nhớ không giới hạn, đe dọa sự ổn định của máy chủ lưu trữ của bạn.

Trong bài viết này, bạn đã học cách đặt giới hạn bộ nhớ vùng chứa cứng và mềm để giảm nguy cơ bạn gặp phải tình huống hết bộ nhớ. Đặt các giới hạn này trên tất cả các vùng chứa của bạn sẽ giảm bớt sự tranh giành tài nguyên và giúp bạn duy trì trong dung lượng bộ nhớ vật lý của máy chủ. Bạn nên cân nhắc sử dụng các giới hạn CPU cùng với giới hạn bộ nhớ của mình – những giới hạn này sẽ ngăn không cho các bộ chứa riêng lẻ có nhu cầu CPU cao ảnh hưởng bất lợi đến các vùng lân cận của chúng.

dịch vụ cài win online từ xa

[ad_2]

Vui lòng đánh giá về dịch vụ tại nhà