2013-05-22 31 views
5

Tôi có véc ni chạy với -s malloc, 25G, nhưng quá trình tiếp tục phát triển cho đến khi nó tiêu thụ tất cả bộ nhớ máy chủ và nó bị treo, khởi động lại bộ nhớ cache.Tại sao không phải là véc ni có tính đến giới hạn malloc?

Bất kỳ ý tưởng nào tôi có thể kiểm tra để xem có gì sai?

Máy chủ có 16 lõi và 32 GB RAM.
Tôi đang sử dụng véc ni 3.

28346? Ss 0:16/usr/sbin/varnishd -P /var/run/varnishd.pid -a: 9290 -T localhost: 6082 -f /etc/varnish/default.vcl -s malloc, 25G -p thread_pools 16 -p thread_pool_min 160 -p thread_pool_max 16000 -p thread_pool_add_delay 2

Memory

Close up

Trả lời

7

các -s malloc,25Gonly limits the cache size, không phải là kích thước của quá trình varnishd.

Điều quan trọng cần lưu ý là kích thước bạn chỉ định với đối số -s là kích thước cho bộ nhớ cache thực. Varnish có một chi phí trên đầu trang này để theo dõi bộ nhớ cache, do đó, dấu chân bộ nhớ thực tế của Varnish sẽ vượt quá đối số ‘-s’ chỉ định nếu bộ nhớ cache đầy đủ. Ước tính hiện tại (có thể thay đổi trên các phiên bản Varnish riêng) là khoảng 1kB chi phí cần thiết cho mỗi đối tượng. Đối với 1 triệu đối tượng, điều đó có nghĩa là sử dụng bộ nhớ thêm 1GB.

Nếu bạn có bộ nhớ cache lớn, phụ trợ file có thể thích hợp hơn.

1

Tài liệu là chính xác, nhưng vấn đề thậm chí còn tồi tệ hơn do phân mảnh bộ nhớ. Để an toàn, bạn nên cho phép kích thước 1,5x đến 2x kích thước được định cấu hình cho malloc stevedore

Các vấn đề liên quan