Recently in apache Category

Прошлой зимой нужно было ограничить скорость отдачи контента для ботов, т.к. они "валили" бэкенды, особенно ночью и особенно яндекс :)

При этом имелось несколько бэкендов, и хотелось их ограничивать "по-разному", или не ограничивать вовсе, в зависимости от текущей нагрузки.

Вообщем в итоге родилось следующее решение:

  • Некий демон с определенным интервалом парсит команду "netstat -Lan", и определяет загруженность бэкендов по величине backlog. Далее смотрит текущий limit_rate для каждого из бэкендов в кеше на базе Cache::FastMmap, и понижает/повышает его, если надо.
  • Хендлер для nginx-а определяет ботов по юзер-агенту, и если пришел бот - вытаскивает из кеша текущий limit_rate для бэкенда.
В результате нагрузка "балансирует".

Архив с демоном, хендлером и примером конфига для nginx: nx_limitrate.tgz

Писалось всё исключительно для себя и быстро, поэтому абсолютно всё захардкодено, т.ч. претензии по этому поводу не принимаю :) Впрочем, код очень маленький и интуитивно понятный. А если нет - то велкам :)

mod_realip для apache2

| 3 Comments

Маленький модуль для второго апача, который совершенно ничего не делает, кроме как подменяет ip-адрес из заголовка X-Real-IP. Собсно, "сделан" из mod_rpaf, с учетом патча, токо выкинуто всё лишнее и ненужное, в т.ч. "настройка".

make install и всё работает :)
realip_c.tar.gz

Давным давно была задача сделать красивый сервер-статус у апача, а именно:
  1. Добавить поле User-Agent
  2. Изменить поле VHost, чтоб брал имя хоста не из VirtualHost, а из заголовка Host
  3. Ну и чуток увеличить размер полей где нужно, и вообще привести всё к более читаемому виду :)

Собственно, делюсь патчами к apache 2.2.9 :)

apache_server_status_229.tgz

После этого сервер-статус выглядит вот так:

About this Archive

This page is an archive of recent entries in the apache category.

algo is the previous category.

freebsd is the next category.

Find recent content on the main index or look in the archives to find all content.

Pages

Powered by Movable Type 4.2-en