Тестирование сервера Apache / PHP по запросу - PullRequest
3 голосов
/ 16 декабря 2010

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

Проблема в том, что сетевое соединение гостевого хоста на самом деле не существует как физическое соединение, поэтому оно будет работать так быстро, как позволит компьютерное оборудование. Обычно это не является большой проблемой, но я пытаюсь реализовать мониторинг загрузки файлов APC, и для этого требуется AJAX-запрос, выполняемый параллельно с загрузкой файла, для контроля его производительности. В реальном мире сеть будет вводить задержки и задержки и тому подобное, оставляя достаточно неиспользуемой полосы пропускания для запроса AjAX, выполняемого параллельно с загрузкой файла. Однако на тестовом компьютере запрос AJAX не может извлечь какие-либо данные с сервера, пока загрузка не будет завершена, поскольку для него абсолютно не остается доступной полосы пропускания.

Можно ли настроить какое-либо управление пропускной способностью на виртуальной машине (в Apache, PHP или какой-либо утилите Linux), которое могло бы ограничить пропускную способность, доступную для HTTP-запроса? Например, чтобы каждый запрос был ограничен 1 Мбит / с, но между клиентом и сервером может существовать несколько запросов одновременно? Я надеюсь, что если это можно будет сделать, это позволит AJAX-запросу извлекать свои данные во время загрузки, а не останавливаться до тех пор, пока загрузка фактически не завершится.

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

Ответы [ 2 ]

0 голосов
/ 17 декабря 2010

Спасибо за ответ. Тем не менее, я обнаружил небольшую удобную утилиту для Linux под названием iprelay, которая позволяет регулировать соединения, и, кажется, позволяет открывать несколько соединений с каждым ограниченным соединением до указанного предела. Это то, что я использовал сегодня для тестирования своего кода APC, и все это, кажется, работает нормально.

0 голосов
/ 16 декабря 2010

То, что вы просите, называется Traffic Shaping.

Lighttpd (альтернатива Apache) поддерживает это изначально

Для Apache есть несколько способовделать это.

  • mod_bandwidth - 3-дневный модуль (который недавно не обновлялся), который, похоже, делает то же самое.
  • mod_bwshare - Модуль 3pd, предназначенный для борьбы с атаками DOS, но может быть полезен.

Вот ServerFault Вопрос , который может иметь отношение ...

...