2012-01-02 26 views
7

Về cơ bản tôi đang cố gắng giữ bộ nhớ sử dụng trên máy chủ Nginx của mình dưới một mức nhất định, bởi vì tôi bị điên (theo bạn bè) & Tôi muốn tiết kiệm tiền. Tuy nhiên tôi lo lắng ImageMagick có thể đẩy nó lên trên cạnh.Hạn chế ImageMagick Memory Use

Tôi đang sử dụng -limit area 20MiB và tôi cũng đã thử -limit memory 15MiB -limit map 15MiB nhưng khi kiểm tra quy trình (khi chạy) qua top -c (with Shift-M)ps aux nó cho thấy nó sử dụng, đôi khi, đáng kể nhiều bộ nhớ hơn tôi đã đặt trong giới hạn. Để cung cấp cho con số nó có thể được sử dụng 35MB hoặc 40MB, thay vì 20MB/30MB tôi mong đợi. Tôi sẽ không bị làm phiền cho 2MB hoặc 3MB nhưng đó là một sự bù đắp khá lớn.

Tôi đã nói với bộ nhớ bổ sung có thể là phí của ImageMagick khi nó tải trình thông dịch, nhưng tôi không quá quen thuộc với các chương trình Unix nên không có đầu mối trong bộ phận đó.

Nếu có ai có thể giải thích tại sao điều này xảy ra, điều đó thật tuyệt. Nếu đó là một điều bình thường, tuyệt vời. Tôi sẽ điều chỉnh mọi thứ để tính đến thực tế rằng nó có thể sử dụng giới hạn của tôi cộng với một số tiền nhất định, nhưng nếu nó không phải là và tham số -limit không giới hạn bộ nhớ với một số tiền nhất định, tham số đó trong ImageMagick?

Một lần nữa, xin cảm ơn sự giúp đỡ của bạn, nó luôn được đánh giá cao.

+0

Không có ý tưởng nào? Nó không phải là một vấn đề lớn, nhưng tôi rất thích nó nếu bất cứ ai có thể làm sáng tỏ điều này. – Vunus

Trả lời

2

Theo tài liệu ImageMagick đang chuyển toàn bộ hoạt động bộ nhớ để mmaped file, vì vậy nó sẽ bắt đầu trao đổi nếu bạn có đủ không gian đĩa, xem hướng dẫn: Snip từ thủ công -Giới hạn:

Các giá trị cho Tệp là số lượng tệp. Giới hạn đĩa là trong Gigabutes và giá trị cho các tài nguyên khác bằng MB. Theo mặc định, giới hạn là 768 tệp, bộ nhớ 1024MB, bản đồ 4096MB và đĩa không giới hạn nhưng được điều chỉnh vào thời điểm khởi động trên nền tảng có thể cung cấp thông tin về các tài nguyên có sẵn. Khi đạt đến giới hạn , ImageMagick sẽ thất bại trong một số thời trang hoặc mất các hành động bồi thường nếu có thể. Ví dụ, bộ nhớ -limit 32 -limit bản đồ 64 giới hạn bộ nhớ Khi bộ nhớ cache pixel đạt đến giới hạn bộ nhớ, nó sử dụng ánh xạ bộ nhớ. Khi đạt đến giới hạn đó, nó sẽ chuyển sang đĩa. Nếu đĩa có giới hạn cứng, chương trình sẽ thất bại.

+0

Tôi chắc chắn có đủ dung lượng ổ đĩa (50GB +) nhưng dường như nó vẫn đang sử dụng số tiền được đặt thông qua tham số -limit. Xin lỗi về sự chậm trễ lớn trong bình luận quá, tôi muốn quên tôi đã hỏi câu hỏi như ImageMagick dường như hành xử chính nó mặc dù điều này vẫn còn là một vấn đề. – Vunus

+0

Chỉ cần thử cài đặt từ svn, có thể phiên bản của bạn bị lỗi? – Arman

+0

Tôi tin rằng nó liên quan đến hệ thống mà máy chủ của tôi đang sử dụng. Tôi đã chuyển sang một máy chủ khác, nơi tôi có thể cài đặt ImageMagik và đã làm việc mà không có vấn đề gì kể từ đó. – Vunus

2

Giới hạn chỉ ảnh hưởng đến bộ nhớ cache pixel của ImageMagick. Mã chương trình và mọi thứ mà thư viện/đại biểu có thể thực hiện để tải hoặc xử lý hình ảnh không bị ảnh hưởng bởi các cài đặt này.

Bạn không chỉ định những gì bạn đang nhìn ở trên cùng, cột phù hợp rõ ràng là RES hoặc RSIZE. Với giới hạn nhỏ như 20MiB, mã chương trình và thư viện sẽ đại diện cho một phần đáng kể kích thước tập hợp thường trú.

Để xác minh rằng bạn đang sử dụng đúng đơn vị cho các biến môi trường của mình, hãy sử dụng identify -list resource. Nếu kích thước của bộ nhớ cache pixel (MAGICK_MEMORY_LIMIT) không đủ cho một hình ảnh, một tệp mmap-ed sẽ được sử dụng (MAGICK_MAP_LIMIT) và nếu giới hạn đó quá thấp, thì một tệp đĩa thông thường (MAGICK_DISK_LIMIT) sẽ được sử dụng thay thế. Nếu tất cả các giới hạn quá thấp, ImageMagick sẽ không thành công ngay lập tức với một lỗi như cache resources exhausted, Memory allocation failed hoặc corrupt image.

+0

Vì vậy, bộ nhớ bổ sung được sử dụng thực sự có thể là thư viện chính nó được nạp vào bộ nhớ, sẽ thêm 10MB là đúng? Tôi nhìn vào RES nó thường bumps thêm 8-10MB trên đầu trang của tôi thiết lập giới hạn vì vậy tôi đã chỉ được giả định nó là chi phí chương trình và đã điều chỉnh bộ nhớ máy chủ của tôi để chứa nó. Cảm ơn câu trả lời. – Vunus