Назад | Перейти на главную страницу

Запрос на выделение SMS с помощью Varnish генерирует HTTP 503

Иногда мое приложение возвращает клиенту ошибку HTTP 503. Единственная подсказка, которая у меня есть, это то, что когда это происходит, Cacti сообщает о пике запросов на размещение Varnish SMS.

После некоторого исследования я мог выделить Varnish слишком много оперативной памяти по сравнению с моей виртуальной машиной. Так я добавил 2Гб. С тех пор Varnish перезагружался, но не перезапускался.

Сейчас ошибка случается редко, но все же.

Вот график кактусов с пиком SMS: http://s29.postimg.org/94bu3vvd3/varnish_SMS.png

лак-3.0.4 на RHEL 6.3

Параметры запуска лака:

/ usr / sbin / varnishd -P /var/run/varnish.pid -a: 80 -f /etc/varnish/rc_platform.vcl -T xxx.xxx.xx.xxx:6082 -t 120 -w 1,1000, 120 -u лак -g лак -S / etc / varnish / secret -s malloc, 6G

Интересная часть varnishstat

SMA.s0.c_req            14736881         2.26 Allocator requests
SMA.s0.c_fail            4190399         0.64 Allocator failures
SMA.s0.c_bytes      353887517876     54362.00 Bytes allocated
SMA.s0.c_freed      347445180586     53372.37 Bytes freed
SMA.s0.g_alloc            311300          .   Allocations outstanding
SMA.s0.g_bytes        6442337290          .   Bytes outstanding
SMA.s0.g_space            113654          .   Bytes available
SMA.Transient.c_req     15771681         2.42 Allocator requests
SMA.Transient.c_fail           0         0.00 Allocator failures
SMA.Transient.c_bytes 910056978442    139797.31 Bytes allocated
SMA.Transient.c_freed 910056853513    139797.29 Bytes freed
SMA.Transient.g_alloc           52          .   Allocations outstanding
SMA.Transient.g_bytes       124929          .   Bytes outstanding
SMA.Transient.g_space            0          .   Bytes available

У меня виртуальная машина 10 ГБ и 6 выделены для Varnish.

Спасибо.

У вас действительно высокое количество SMA.s0.c_fail. Итак, Varnish пытается выделить память и терпит неудачу. Вы можете сделать Varnish более агрессивным, увеличив nuke_limit, то есть количество объектов, которые Varnish может убить при попытке освободить память.

Вам необходимо перезагрузить компьютер, чтобы изменения в настройках памяти вступили в силу. Тем не менее, я предлагаю выделить вашему серверу больше памяти. Увеличить объем памяти для Varnish обычно дешево и разумно.

Чтобы избежать сбоя запроса, Varnish выделит временную память для хранения объекта. Временное хранилище памяти не ограничено, что означает, что оно потенциально может вывести сервер из строя в случае чрезмерного использования. Вы можете ограничить его, если хотите.