Тестирование пропускной способности сети. Мониторинг пропускной способности «все в одном»: PRTG Network Monitor. Практический совет: «Послушай, Матиас, что бы ты сказал администраторам, которые хотят вести мониторинг пропускной способности?»

Самым популярным на сегодняшний момент является веб-сервер Apache . Сегодня я расскажу вам как быстро и правильно установить apache . Вашему вниманию будет представлено пошаговое описание процесса установки веб-сервера, которое будет сопровождаться скриншотами экрана.

Приступим!

Так как проект расчитан на начинающих веб разработчиков, то для простоты настройки и установки ПО мы будем программировать под Windows. По мере набора опыта, вы легко сможете “переехать” на *nix платформу.

Итак, для начала нам необходимо скачать последнюю версию дистрибутива Apache (4.6 Mb). На момент написания этой заметки – это версия 2.2.10. К моменту прочтения этого текста, ваша версия может быть более новой, но это не меняет сути. Каких-либо коренных отличий быть не должно.

Находим на странице раздел “Apache HTTP Server 2.2.10 is the best available version ” (лучшая доступная версия) и там выбираем дистрибутив для Windows – “Win32 Binary without crypto (no mod_ssl) (MSI Installer) ” (установочный файл без поддержки SSL, т.к. для наших уроков SSL нам не понадобиться):

Итак, мы скачали установочный файл apache_2.2.10-win32-x86-no_ssl.msi . Запускаем установщик:

Просто нажимаем Next.

Принимаем лицензионное соглашение и нажимаем Далее.

На этом этапе заполняем поля, так как указано на картинке. Эти данные прописываются в конфигурационный файл и могут быть в дальнейшем отредактированы.

Я настоятельно рекомендую вам установить Apache именно в эту папку (она предлагается по умолчанию). Следующие уроки будут посвящены установке и настройке PHP и MySQL. Я буду ориентироваться именно на этот путь установки Apache. Так что, если после установки Apache вам не нужны лишние проблемы с прикручиванием к нему PHP и MySQL, то советую прислушаться к моим словам. В дальнейшем, когда вы пару раз сами поставите и сможете настроить apache , вы установите его в удобную для вас директорию.

Подготовка к установке завершена. Нажимаем Install и ждем пока завершиться установка.

Поздравляю, установка Apache завершена!

Если у кого-то возникли трудности в установке – пишите в комментариях. Я постараюсь помочь.

Apache - это популярнейший свободный веб-сервер. Состоянием на 2016 год он используется на 33% всех сайтов интернета, а это приблизительно 304 миллиарда сайтов. Этот веб-сервер был разработан в далеком 1995, как замена для популярного того сервера NCSA и исправил множество его проблем. Ходят слухи что его имя походит от a patchy, заплатка, так как он исправлял ошибки NCSA. Сейчас же, это кроссплатформенная программа, поддерживающая Windows, Linux и MacOS и обеспечивающая достаточную гибкость, настраиваемость и функциональность. Программа имеет модульную структуру, что позволяет расширять ее функциональность почти до бесконечности с помощью модулей.

Установить Apache в Linux можно с помощью нескольких команд, но программа предоставляет очень большое количество настроек, которые можно изменить, а также модулей, после включения которых она будет работать лучше. В этой статье будет рассмотрена установка и настройка Apache, в качестве основной системы мы будем использовать Ubuntu, но вы можете повторить эти действия в любом другом дистрибутиве. Будет рассмотрена не только установка самой программы, но и способы ее настройки, настройка виртуальных хостов apache, а также самые полезные модули.

На данный момент, самая новая версия программы 2.4 поэтому и будет рассмотрена настройка apache 2.4. Как я уже говорил, в Linux программа устанавливается буквально в пару команд. Для установки в Ubuntu сначала обновим систему до самой новой версии:

sudo apt update
$ sudo apt upgrade

Затем установка apache2:

sudo apt install apache2

В других дистрибутивах пакет программы называется либо так, либо httpd и его установка у вас не вызовет трудностей.

После завершения установки нужно добавить веб-сервер в автозагрузку, чтобы не запускать его вручную после включения компьютера:

sudo systemctl enable apache2

Настройка Apache

Уже прошло то время, когда конфигурация Apache хранилась в одном файле. Но оно и правильно, когда все распределено по своим директориям, в конфигурационных файлах легче ориентироваться.

Все настройки содержатся в папке /etc/apache/:

  • Файл /etc/apache2/apache2.conf отвечает за основные настройки
  • /etc/apache2/conf-available/* - дополнительные настройки веб-сервера
  • /etc/apache2/mods-available/* - настройки модулей
  • /etc/apache2/sites-available/* - настойки виртуальных хостов
  • /etc/apache2/ports.conf - порты, на которых работает apache
  • /etc/apache2/envvars

Как вы заметили есть две папки для conf, mods и site. Это available и enabled. При включении модуля или хоста создается символическая ссылка из папки available (доступно) в папку enable (включено). Поэтому настройки лучше выполнять именно в папках available. Вообще говоря, можно было бы обойтись без этих папок, взять все и по старинке свалить в один файл, и все бы работало, но сейчас так никто не делает.

Сначала давайте рассмотрим главный файл конфигурации:

vi /eta/apache2/apache2.conf

Timeout - указывает как долго сервер будет пытаться продолжить прерванную передачу или прием данных. 160 секунд будет вполне достаточно.

KeepAlive On - очень полезный параметр, позволяет передавать несколько файлов, за одно соединение, например, не только саму html страницу, но и картинки и css файлы.

MaxKeepAliveRequests 100 - максимальное количество запросов за одно соединение, чем больше, тем лучше.

KeepAliveTimeout 5 - таймаут соединения, обычно для загрузки страницы достаточно 5-10 секунд, так что больше ставить не нужно, но и рвать соединение раньше чем загрузились все данные тоже не нужно.

User, Group - пользователь и группа, от имени которых будет работать программа.

HostnameLookups - записывать в логи вместо ip адресов доменные имена, лучше отключить, чтобы ускорить работу.

LogLevel - уровень логирования ошибок. По умолчанию используется warn, но чтобы логи заполнялись медленнее достаточно включить error

Include - все директивы include отвечают за подключение рассмотренных выше конфигурационных файлов.

Директивы Directory отвечают за настройку прав доступа к той или иной директории в файловой системе. Синтаксис здесь такой:


Параметр значение

Здесь доступны такие основные опции:

AllowOverride - указывает нужно ли читать.htaccess файлы из этой директории, это такие же файлы настроек и таким же синтаксисом. All - разрешать все, None - не читать эти файлы.

DocumentRoot - устанавливает из какой папки нужно брать документы для отображенияа пользователю

Options - указывает какие особенности веб-сервера нужно разрешить в этой папке. Например, All - разрешить все, FollowSymLinks - переходить по символическим ссылкам, Indexes - отображать содержимое каталога если нет файла индекса.

Require - устанавливает, какие пользователи имеют доступ к этому каталогу. Require all denied - всем запретить, Require all granted - всем разрешить. можно использовать вместо all директиву user или group чтобы явно указать пользователя.

Order - позволяет управлять доступом к директории. Принимает два значения Allow,Deny - разрешить для всех, кроме указанных или Deny,Allow - запретить для всех, кроме указанных..ru.

Здесь все эти директивы не используются, поскольку нас устраивают значения по умолчанию, но вот в файлах.htaccess они могут быть очень полезны.

У нас остался файл /etc/apache2/ports.conf:

В нем только одна директива, Listen, которая указывает программе на каком порту нужно работать.

Последний файл /etc/apache2/envvars, его вы вряд ли будете использовать, в нем указанны переменные, которые можно использовать в других конфигурационных файлах.

Настройка сервера Apache через htaccess

Файлы.htaccess позволяют настраивать веб-сервер на Ubuntu для поведения в определенной директории. Все инструкции, указанные в этом файле выполняются как бы они были обвернуты в тег если бы находились в основном файле.

Важно заметить, что для того, чтобы сервер читал инструкции из.htaccess настройки для этой папки в основном файле или файле виртуального хоста не должны содержать AllowOverride None , чтобы могли работать все настройки нужно AllowOverride All .

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

Order Deny,Allow
Deny from all

Запрещает всем доступ к этой папке, важно применить, для папок с конфигурацией. Чаще всего.htaccess используется для работы с модулем mod_rewrite, который позволяет изменять запросы на лету:

RewriteEngine on
RewriteRule ^product/([^/\.]+)/?$ product.php?id=$1 [L]

Но это очень обширная тема и выходит за рамки этой статьи.

Настройка модулей Apache

Как я уже говорил, Apache - модульная программа, ее функциональность можно расширять с помощью модулей. Все доступные модули загрузчики и конфигурационные файлы модулей находятся в папке /etc/apache/mods-available. А активированные в /etc/apache/mods-enable.

Но вам необязательно анализировать содержимое этих папок. Настройка Apache 2.4 с помощью добавления модулей выполняется с помощью специальных команд. Посмотреть все запущенные модули можно командой:

Включить модуль можно командой:

sudo a2enmod имя_модуля

А отключить:

sudo a2dismod имя_модуля

После включения или отключения модулей нужно перезагрузить apache:

sudo systemctl restart apache2

Во время выполнения одной из этих команд создается или удаляется символическая ссылка на файл модуля с расширением load в директории mods-available. Можете посмотреть содержимое этого файла, там только одна строка. Например:

vi /etc/apache2/mods-available/deflate.load

Это к тому, что активировать модуль можно было просто добавив эту строчку в файл apache2.conf. Но принято делать именно так, чтобы избежать путаницы.

Настройки модулей находятся в той же папке, только в файле с расширением.conf вместо load. Например, посмотрим настройки того же модуля для сжатия deflate:

vi /etc/apache2/mods-available/deflate.conf

Файлы в папке conf-available, это такие же модули, только они установлены отдельно от apache, это может быть конфигурационные файлы для включения модуля php или любого другого языка программирования. Здесь работает все точно так же, только команды для включения и отключения этих модулей немного другие:

a2enconf имя_модуля

a2disconf имя модуля

Как вы убедились, включать модули очень просто. Давайте включим несколько необходимых, но не включенных по умолчанию модулей:

sudo a2enmod expires
$ sudo a2enmod headers
$ sudo a2enmod rewrite
$ sudo a2enmod ssl

Модули expires и headers уменьшают нагрузку на сервер. Они возвращают заголовок Not Modified, если документ не изменился с последнего запроса. Модуль expiries позволяет устанавливать время, на которое браузер должен кэшировать полученный документ. Rewrite позволяет изменять запрашиваемые адреса на лету, очень полезно при создании ЧПУ ссылок и т д. А последний для включения поддержки шифрования по SSL. Не забудьте перезагрузить apache2 после завершения настроек.

Настройка виртуальных хостов Apache

Было бы не совсем удобно, если на одной физической машине можно было размещать только один сайт. Apache может поддерживать сотни сайтов на одном компьютере и выдавать для каждого из них правильное содержимое. Для этого используются виртуальные хосты. Сервер определяет к какому домену приходит запрос и отдает нужное содержимое из папки этого домена.

Настройки хостов Apache расположены в папке /etc/apache2/hosts-available/. Для создания нового хоста достаточно создать файл с любым именем (лучше кончено с именем хоста) и заполнить его нужными данными. Обернуть все эти параметры нужно в директиву VirtualHost. Кроме рассмотренных параметров здесь будут использоваться такие:

  • ServerName - основное имя домена
  • ServerAlias - дополнительное имя, по которому будет доступен сайт
  • ServerAdmin - электронная почта администратора
  • DocumentRoot - папка с документами для этого домена

Например:

vi /etc/apache2/sites-available/test.site.conf

Web-сервер – это сервер, являющийся местом хранения страниц вебсайта вместе с базами данных и различными программными модулями сайта, это основополагающий элемент в работе всех web-ресурсов, хранящихся на нем. Но сама по себе ОС сервера не будет обеспечивать функционирование вебсайта, необходимо определенное программное обеспечение, которым и является программный веб-сервер Apache.

Этот web-сервер был разработан в начале 90-ых годов и был предназначен для работы на платформе ОС Linux и Unix. Со временем, список поддерживаемых операционных систем значительно расширился. В настоящее время, web-сервер Apache функционирует на платформе ОC Windows, Mac OS, BSD, Linux, OS/2 и Novell NetWare. Веб-сервер имеет широкий набор расширений для работы с многими языками web-программирования:

  • mod_php для PHP;
  • mod_perl для Perl;
  • mod_wsgi, mod_python для Python;
  • apache-ruby для Ruby;
  • apache-asp для ASP.

Дополняют функционал Apache многие разработчики по всему миру, но разработкой ядра веб-сервера занимаются только специалисты Apache Software Foundation. Например, русские специалисты занимаются разработкой расширения для легкой восприимчивости Apache к русскоязычной кодировке. Apache можно использовать как на web-сервере, работающем в глобальной сети, так и для локального использования, чтобы тестировать разрабатываемые вебсайты.

Достоинства веб-сервера Apache

Apache является самым распространенным веб-сервером, установленным на больше чем половине хостов по всему интернету. Главным образом, этому способствовало:

  1. его бесплатная лицензия, которая позволяет работать с ним как новичкам так и профессионалам web-индустрии;
  2. кроссплатфоменность (которая является одним из главных плюсов по сравнению с вечным соперником – веб-сервером IIS);
  3. открытость кода, благодаря которой многие специалисты могли дополнять и улучшать функционал Apache;
  4. высокий уровень безопасности;
  5. надежность и удобство работы.
P.S. И в дополнение дам совет не связанный с миром Web"a. Если вы занимаетесь массажем и у вас есть свой массажный кабинет, то рекомендуем вам обратить внимание на интернет-магазин massage-chairs-abakan.ru. Там вы сможете

Заявленная скорость соединения с интернетом, которую обещают провайдеры, иногда не соответствует реальной пропускной способности соединения. Скорость соединения может быть несколько ниже гарантированной, а кроме этого, может быть нестабильной. При простом просмотре страниц в браузере пользователь может даже не обратить внимания на подобное несоответствие, однако при воспроизведении онлайнового видео, передаче файлов и других действиях в сети, когда необходима высокая пропускная способность, недостаток скорости будет заметен. Если обратиться напрямую к провайдеру, служба поддержки вряд ли признает данный факт, и в качестве оправдания может быть названо множество причин - плохое состояние телефонной линии, наличие в данном районе устройств, вызывающих помехи, и так далее. Еще одна популярная отговорка - скорость соединения зависит от возможностей удаленного сервера. Можно самостоятельно измерить скорость, например, скачать большой файл и отметить, сколько ушло времени на его загрузку. Аналогичным образом можно попытаться измерить и скорость исходящего соединения - отправить файл самому себе по электронной почте или другим способом. Но все эти "замеры" выполнять очень неудобно, да и за достоверность таких "кустарных" измерений ручаться не приходится. Чтобы не "гадать на кофейной гуще" и точно определить, какая именно скорость подключения используется на данном компьютере, можно использовать онлайновый сервисSpeedtest.net. Принцип измерения скорости передачи данных, который использует данный сервис, состоит в следующем. На схематической карте мира обозначены наиболее быстрые серверы различных интернет-провайдеров. Пользователь может выбрать любой из них и проверить скорость своего соединения с интернетом. В процессе проверки тестируемый компьютер обменивается пакетами с удаленным сервером.

Зафиксированные показатели могут отличаться - для определяемой скорости большое значение имеет то, насколько велико расстояние между тестируемым компьютером и удаленным сервером. Кроме того, на результат влияет и скорость подключения удаленного компьютера. Если пользователь использует высокоскоростной интернет, не исключено, что удаленный компьютер использует менее скоростной канал, и конечные цифры будут ниже действительных. Однако преимущество сервиса Speedtest.net состоит в том, что пользователь может собственноручно изменять серверы, чтобы определить максимальную скорость. Помимо данных о скорости сетевого соединения, сервис предоставляет много интересной статистики, например, составляет рейтинг стран мира с наиболее быстрым интернетом, составляет такой же рейтинг в выбранном регионе (например, только в Европе), дает возможность выставлять оценку своему провайдеру, показывает расстояние до выбранного сервера и многое другое. Любой работающий сервер может принять участие в проекте Speedtest.net в качестве тестируемого удаленного компьютера.

Iperf консольная утилита с открытым исходным кодом, предназначенная для тестирования пропускной способности сети. С ее помощью довольно просто измерить максимальную пропускную способность сети между сервером и клиентом, провести нагрузочное тестирование канала связи или маршрутизатора

Утилита Iperf является кроссплатформенной и не требует установки, достаточно просто скопировать ее на два компьютера, пропускную способность сети между которыми нужно оценить.

Работает утилита Iperf в режиме клиент-сервер. На первом компьютере утилита Iperf запускается в режиме сервера (ожидает трафик от клиента), а на втором, на котором Iperf запускается в режиме клиента, осуществляется генерация TCP и UDP трафика и проводится измерение скорости передачи данных.

Чтобы оценить пропускную способность сети между двумя узами сети, запустим сначала утилиту iperf в серверном режиме:

Iperf.exe -s -w 32768

Важно . Аргументы утилиты iperf регистрозависимы.

-s –утилита запускается в серверном режиме (получающая сторона)
-w 32768 – зададим размер окна TCP в 32 KB (по умолчанию около 8 Кб)

По умолчанию утилита слушает TCP порт 5001 .В зависимости от настроек файерволов между клиентом и сервером, порт можно изменить с помощью аргумента -p [номер_порта].

На стороне клиента запустим iperf со следующими опциями:

Iperf.exe -c 10.0.0.44 -P 8 -t 30 -w 32768

-c 10.0.0.44 – IP адрес сервера iperf
-w 32768 — увеличиваем размер TCP окна
-t 30 – время в секундах, в течении которого выполняется тестирование (по умолчанию 10 секунд)
-P 8 — число альтернативных потоков для увеличения пропускной способности

В нашем примере тестирование длилось 30 секунд. В итоговом отчете нас интересует значения столбца Bandwidth последней строки . В нашем случае средняя пропускная способность сети между двумя системами – 2,85 Гбит/с. С помощью аргумента –f можно изменить формат скорости (биты, килобиты, мегабайты). При продолжительных тестах, когда нужно оценивать производительность в течении нескольких минут, с помощью опции –i можно указать интервал через который нужно отображать промежуточные результаты.

По-умолчанию утилита генерирует TCP трафик, если требуется осуществить тестирование для протокола UDP, необходимо использовать ключ -u.

Во время выполнения теста график загрузки сети в Task Manager выглядит так:

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

Если необходима оценка пропускной способности сети в обоих направлениях (в дуплексом режиме), дополнительно на клиенте нужно указать опцию –d :

Iperf.exe -c IP -P 8 -t 30 -w 32768 -d

Полный список опций утилиты можно получить так:

Iperf –help

Скачать версию iperf для Windows можно на softpedia.com (iperf-2.0.5-2-win32.zip) или .

Для тех, кто предпочитает графический интерфейс управления, имеется и графический аналог iperf — утилита jperf , написания на Java (для работы на компьютере должна быть установлена Java-машина). Помимо графических рюшечек к CLI интерфейсу, Jperf умеет в реальном времени строить графики пропускной способности канала связи.

Итак, резюмируя, Iperf – простая и удобная сетевая утилита, которая может измерить производительность и качество соединения между двумя системами. И не смотря на то, что развитие программы давно прекращено, ее функционала вполне хватает для поставленной задачи.