mads: сервер опять мертвый... да, статистика нагрузки и прочего есть...
все же надо брать гиговую сетевую... но она потребуют мощный процессор...
короче выбрал себе такой сервак:
пень4 3200герца
2гига памяти
2*100м сетевых...
Нормальная сетевушка на оси с нормальными дровами не должна грузить проц.
Кстати сейчас во всех серверных платформах ставят гигабитные сетевые карточки.
Странно как-то что две по сто.
Если сотки, то с провайдером договариваться о подключении обоих портов на 100 мегабитах. На обе вешать ip адреса и делать в днсах для домена, на который идёт ссылка с сайта (того откуда идют посетители) эти ip'ы.
Тогда нагрузка будет равномерно распределяться на оба порта.
А машинка для файлового архива по конфигурации вполне рабочая.
Roxis: nginx просто так не сдохнет!
насчёт proftpd не уверен.
вместо proftpd надо vsftpd - самый быстрый и безопасный ftp сервер.
Nginx сдохнет просто на ура. Как начнёт нарезать отдаваемые файлы чанками, так на этом всё и кончится, попробуйте отдавать файлы метров по 600 каждый на 250 посетителей, и увидете. Он рассчитан совсем для другого.
mads: проблема найдена.
все дело в открытых сессиях, некоторые люди умудрялись открывать по 30-40 сессий тем самым забивали весь канал - и в этот момент сервак умирал.
поставили ограничение до 4 сессий - все стало работать на ура.
Понятно, однако исходные данные были неверными:
"сетевой канал (или как там его) - 60метров (из них используется только 40)".
Замечу, что даже при включёных KeepAliv'ах msie использует до 8 соединений.
Тоесть если бы у вас там лежали скажем картинки к форуму, то при ограничении до 4 сессий открываться бы они у посетителей стали крайне криво. Вероятно всётаки раздаёте какие-то большие файлы, и 4 сессий при этом хватает.
mads: сайт живет отдельно от сервера. я же написал, что на сайте посещаемость свыше 10000 людей, а сервак лежал мертвым по 9-10 часов. как вы думаете если бы сайт был вечно не доступен - была бы на нем такая посещаемость?:p
В данном контексте под сайтом подразумевалось то, что отдавало файлы по http.
Lupus: С любого IP надо ограничивать к-во коннектов. С любого. Там, вроде, первый пример так и делает.
Пример, бот лезет через прокси по списку. С каждого ип по 10 запросов.
Лимиты он не превысит, однако нагрузку создаст.
Lupus:
Вообще-то, конечно, справедливо. Повесить что-то вроде "tail -f <logfile> | grep <user-agent> | awk '{print $1}' | xargs ... "
Но, чем огород городить, может лучше snort на его перехват настроить? :)
Можно и так, если не будет ложных срабатываний. В случае с логом такие вещи исключены. Да и не факт, что разрешат поснифить на vds ..
Lupus: Как раз количество внешних запросов стоит ограничивать независимо от юзер-агентов и вообще разновидности клиента и протокола.
Об этом много написано.
А если эта качалка полезет с разных ип. Ну скажем через прокси?
Человек ведь пишет как матчить. По User Agent'у :)
P.S. По поводу парсинга лога, ето ещё и удобно тем, что нет необходимости
в каких-либо наворотах. Ну и 1 запрос с таким User Agent'ом пройдёт,
а остальные пойдут в никуда. Тоесть до апача доберётся только 1 запрос. Остальные нагрузки не создадут.
1 простой: На httpd сервере включить лог, написать малюсенькую програмку в которую скармливать лог через пайп, програмкой парсить лог и как только появляется человек с искомым User Agent'ом, его ip ставить в фаэрвол.
2 сложнее: перед httpd поставить враппер/прокси который бы смотрел что за User Agent, если искомый, то добавлял бы правило в фаэрвол =)
3 извращённый, написать свой httpd который бы ставил в фаэрвол правила на блок
бугага :) RTFM :D Домен привязывается к айпи. Делаем ftp1.site.ru и ftp2.site.ru и вешаем их на разные ипы.
Так можно и ftp.site.ru:
ftp.site.ru -> ip1
ftp.site.ru -> ip2
о чём я и писал выше.
Однако мне кажется, что у топикстартера не просто так оно смотрит на ип.
сервер опять мертвый... да, статистика нагрузки и прочего есть...
все же надо брать гиговую сетевую... но она потребуют мощный процессор...
короче выбрал себе такой сервак:
пень4 3200герца
2гига памяти
2*100м сетевых...
Нормальная сетевушка на оси с нормальными дровами не должна грузить проц.
Кстати сейчас во всех серверных платформах ставят гигабитные сетевые карточки.
Странно как-то что две по сто.
Если сотки, то с провайдером договариваться о подключении обоих портов на 100 мегабитах. На обе вешать ip адреса и делать в днсах для домена, на который идёт ссылка с сайта (того откуда идют посетители) эти ip'ы.
Тогда нагрузка будет равномерно распределяться на оба порта.
А машинка для файлового архива по конфигурации вполне рабочая.
nginx просто так не сдохнет!
насчёт proftpd не уверен.
вместо proftpd надо vsftpd - самый быстрый и безопасный ftp сервер.
Nginx сдохнет просто на ура. Как начнёт нарезать отдаваемые файлы чанками, так на этом всё и кончится, попробуйте отдавать файлы метров по 600 каждый на 250 посетителей, и увидете. Он рассчитан совсем для другого.
Ну а какой ftpd, вопрос вкуса.
если так лучше, то сделаем... по статстике на серваке 200-250 коннектов сразу и качают в минуту по 250 метров... тоесть в месяц 10терабайт...🙅
250/60 = 4.166 мегабайта в секунду
4.166 * 8 = 33.3 мегабита.
Если порт 100 мегабитный, то его должно хватать. Однако наверняка есть пиковые
нагрузки. Вы или ваш провайдер ведёте статистику звгрузки порта?
Например через mrtg, или cacti ? Если нет, то по идее следует или с их помощью,
или как-то иначе мониторить порт. В случае появления на графике полки на 100
мегабит, то надо или брать доп. порт у провейдера, или апгрейдить туществующий до гигабита.
Или решить что важнее отдавать посетителям файлы быстро и настолько насколько
смогут получить, но вам это обойдётся в увеличение стоимости в виде апгрейда
порта. Или сэкономить, и зажимать граждан в числе коннектов.
А по числе коннектов грамотно может лимитировать тот-же ftp сервер,
при этом выдаст корректную ошибку, о превышении числа подключений и т.д.
Не скажу за других, но вот в локалке работает машинка под FreeBSD,
На ура выдаёт 300-400 мегабит в секунду. Апач бы давно на таких объёмах сдох.
Кстати nginx тоже. А ProFtpd отдаёт на ура.
Ну раз не закрыли вопрос, то Imho, на отдачу больших файлов надо ставить ftpd.
Он для этого больше предназначен.
проблема найдена.
все дело в открытых сессиях, некоторые люди умудрялись открывать по 30-40 сессий тем самым забивали весь канал - и в этот момент сервак умирал.
поставили ограничение до 4 сессий - все стало работать на ура.
Понятно, однако исходные данные были неверными:
"сетевой канал (или как там его) - 60метров (из них используется только 40)".
Замечу, что даже при включёных KeepAliv'ах msie использует до 8 соединений.
Тоесть если бы у вас там лежали скажем картинки к форуму, то при ограничении до 4 сессий открываться бы они у посетителей стали крайне криво. Вероятно всётаки раздаёте какие-то большие файлы, и 4 сессий при этом хватает.
сайт живет отдельно от сервера. я же написал, что на сайте посещаемость свыше 10000 людей, а сервак лежал мертвым по 9-10 часов. как вы думаете если бы сайт был вечно не доступен - была бы на нем такая посещаемость?:p
В данном контексте под сайтом подразумевалось то, что отдавало файлы по http.
тема закрыта
Ok. Всего :)
Проблема скорее всего в дисковой подсистеме.
Что там за hdd, и какие размеры файлов (в среднем каждого, есть-ли большие (по несколько сот мегов)). И сколько весь сайт весит.
С любого IP надо ограничивать к-во коннектов. С любого. Там, вроде, первый пример так и делает.
Пример, бот лезет через прокси по списку. С каждого ип по 10 запросов.
Лимиты он не превысит, однако нагрузку создаст.
Вообще-то, конечно, справедливо. Повесить что-то вроде "tail -f <logfile> | grep <user-agent> | awk '{print $1}' | xargs ... "
Но, чем огород городить, может лучше snort на его перехват настроить? :)
Можно и так, если не будет ложных срабатываний. В случае с логом такие вещи исключены. Да и не факт, что разрешат поснифить на vds ..
Как раз количество внешних запросов стоит ограничивать независимо от юзер-агентов и вообще разновидности клиента и протокола.
Об этом много написано.
А если эта качалка полезет с разных ип. Ну скажем через прокси?
Человек ведь пишет как матчить. По User Agent'у :)
P.S. По поводу парсинга лога, ето ещё и удобно тем, что нет необходимости
в каких-либо наворотах. Ну и 1 запрос с таким User Agent'ом пройдёт,
а остальные пойдут в никуда. Тоесть до апача доберётся только 1 запрос. Остальные нагрузки не создадут.
Варианты:
1 простой: На httpd сервере включить лог, написать малюсенькую програмку в которую скармливать лог через пайп, програмкой парсить лог и как только появляется человек с искомым User Agent'ом, его ip ставить в фаэрвол.
2 сложнее: перед httpd поставить враппер/прокси который бы смотрел что за User Agent, если искомый, то добавлял бы правило в фаэрвол =)
3 извращённый, написать свой httpd который бы ставил в фаэрвол правила на блок
ип с которого пришли с искомым юзер агентом.