Tôi đã bắt đầu một vài máy chủ trên EC2 và chúng không có trao đổi.
Tôi đang làm gì đó sai hay là máy móc không có gì cả?
Tôi đã bắt đầu một vài máy chủ trên EC2 và chúng không có trao đổi.
Tôi đang làm gì đó sai hay là máy móc không có gì cả?
Câu trả lời:
Bạn đã đúng, hình ảnh Ubuntu EC2 EBS không đi kèm với không gian hoán đổi được định cấu hình ( ít nhất là cho 11.04 ). Các ảnh loại đối tượng "thông thường" có phân vùng trao đổi, mặc dù chỉ có 896 MB trên ảnh tôi đã kiểm tra.
Nếu một số quá trình nổ tung và bạn không có không gian hoán đổi, máy chủ của bạn có thể dừng hoạt động để thu thập thông tin trong khi trước khi kẻ giết người OOM tấn công, trong khi với trao đổi, nó chỉ bị chậm. Vì lý do đó, tôi luôn muốn có không gian hoán đổi xung quanh, thậm chí có đủ RAM. Đây là lựa chọn của bạn:
Tạo một khối lượng EBS (gấp 2-4 lần kích thước RAM của bạn), gắn nó vào ví dụ của bạn (tôi thích gọi nó là / dev / xvdm cho "bộ nhớ") sudo mkswap /dev/xvdm
, thêm nó vào fstab sudo swapon -a
và bạn sẽ ổn . Tôi đã làm điều này trước đây và nó hoạt động tốt, nhưng nó có thể chậm hơn một chút so với cửa hàng cá thể vì nó đi qua mạng.
Hoặc bạn có thể phân vùng lại đĩa của mình để thêm phân vùng trao đổi, mặc dù điều này có thể yêu cầu tạo AMI mới. Tôi đã không thể làm điều này trong một phiên bản đang chạy, vì tôi không thể ngắt kết nối hệ thống tập tin gốc và tôi thậm chí không có quyền truy cập vào thiết bị đĩa (/ dev / xvda), chỉ phân vùng (xvda1).
Hoặc bạn có thể tạo một tập tin trao đổi. Đây là giải pháp ưa thích của tôi ngay bây giờ.
sudo dd if=/dev/zero of=/var/swapfile bs=1M count=2048 &&
sudo chmod 600 /var/swapfile &&
sudo mkswap /var/swapfile &&
echo /var/swapfile none swap defaults 0 0 | sudo tee -a /etc/fstab &&
sudo swapon -a
Làm xong. :) Tôi biết rất nhiều người cảm thấy khó chịu khi sử dụng các tệp thay vì các phân vùng, nhưng nó chắc chắn hoạt động đủ tốt như không gian trao đổi khẩn cấp.
Vị trí tốt nhất để trao đổi IMHO là cửa hàng cá thể. Tại sao? AWS không tính phí bạn cho i / o trên cửa hàng cá thể. Ngoài ra, cửa hàng cá thể có hiệu suất cao hơn EBS trong nhiều trường hợp. Chỉ cần đảm bảo rằng bạn có một tập lệnh tạo lại tệp hoán đổi trong trường hợp bạn dừng cá thể. Khởi động lại là tốt. Tại sao oh tại sao nó không ở đó theo mặc định?
Hãy xác định vị trí cửa hàng cá thể.
root@domU-**-**-**-**-**-**:/var/log# fdisk -l
[...]
Disk /dev/xvda2: 160.1 GB, 160104972288 bytes
255 heads, 63 sectors/track, 19464 cylinders, total 312705024 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/xvda2 doesn't contain a valid partition table
Hurrah, 160.1GB miễn phí! Đặt trao đổi của bạn vào đó và quên 100 đô la cho mỗi máy chủ khi trao đổi dựa trên EBS của bạn bị nhầm lẫn. Kinh nghiệm không may nói chuyện ở đây.
Rõ ràng trong một số trường hợp bạn không thấy cửa hàng cá thể.
Tùy thuộc vào loại thể hiện, trước tiên bạn cần đính kèm khối lượng lưu trữ cá thể vào thể hiện bằng cách sử dụng các tùy chọn ánh xạ khối thiết bị. Nếu bạn không làm điều này, bạn thậm chí có thể không nhìn thấy các thiết bị dưới / dev (theo Cách sử dụng bộ lưu trữ "Instance Store Volume" trong Amazon EC2? )
Lưu ý : Amazon đã thay đổi chính sách giá của họ và không tính phí cho các yêu cầu I / O kể từ giữa năm 2016. Câu trả lời được giữ ở đây vì lý do lịch sử, nhưng không có ý nghĩa chi phí của việc sử dụng (hoặc không sử dụng) trao đổi trên các trường hợp được hỗ trợ bởi EC2 EBS.
Đây là do thiết kế. Hoán đổi được tắt theo mặc định trên các phiên bản được hỗ trợ bởi EC2 EBS, để tránh các chi phí không thể đoán trước.
Nếu bạn có một ứng dụng ngốn bộ nhớ bị lừa đảo (ví dụ, trong một ví dụ nhỏ hoặc nhỏ), nó có thể tạo ra một lượng lớn yêu cầu I / O trên khối lượng EBS của bạn. Amazon tính phí 0,10 đô la cho mỗi 1 triệu yêu cầu I / O (xem http://aws.amazon.com/pricing/ebs/ ) .
Trong điều kiện bình thường, bạn không nên lo lắng về nó; thường là chi phí của các yêu cầu I / O ngay cả trong các trường hợp nhỏ hơn một vài đô la, nếu vậy. Vì vậy, nếu bạn biết bạn có một cá thể có kích thước phù hợp và trao đổi đó sẽ chỉ được sử dụng không thường xuyên, hãy tiếp tục và kích hoạt nó. Nhưng hãy cẩn thận với những trường hợp nhỏ.
Nếu bạn bật trao đổi, bạn có thể muốn theo dõi Báo cáo sử dụng. Theo tùy chọn, bạn cũng có thể thiết lập Thông báo thanh toán bằng cách truy cập Bảng điều khiển CloudWatch và tạo Báo thức mới cho tổng số tiền được lập hóa đơn. Bằng cách này, bạn sẽ được thông báo ngay lập tức là có điều gì đó kỳ lạ đang xảy ra với các trường hợp của bạn.
Kiểm tra /etc/fstab
tệp, chúng có thể đã được thiết lập mà không trao đổi trong hình ảnh bạn đang sử dụng. Tôi nghĩ rằng một số người chạy mà không trao đổi cho máy chủ vì họ mong đợi không bao giờ sử dụng nhiều hơn tổng bộ nhớ - trao đổi làm cho mọi thứ trở nên siêu chậm.
Tuy nhiên, tôi luôn hoang tưởng về một số quá trình tăng tốc trong bộ nhớ, vì vậy tôi nghĩ rằng sẽ rất khôn ngoan khi bạn chỉ cần thiết lập một ổ đĩa trao đổi và tạo lại một hình ảnh từ phiên bản ec2 đang chạy.
Một giải pháp đơn giản để chạy swap
trong EC2
hình ảnh là để chạy swap
nén bằng lz4
ở ram
với zram-init
.
Giải pháp này không lấy ram
đi từ host
:
zswap
cung cấp bộ đệm RAM được nén trên đầu tệp / đĩa trao đổi thông thường: wiki.archlinux.org/index.php/zswap . Xem cnx-software.com/2018/05/14/ trên để biết thêm về zram.