2008-10-23 3 views
4

Мне нужно проверить веб-форму, которая загружает файл. Размер файла в каждой загрузке будет около 10 МБ. Я хочу проверить, может ли сервер обрабатывать более 100 одновременных загрузок, и по-прежнему остается отзывчивым для остальной части сайта.Как я могу подчеркнуть загрузку файла веб-формы?

Повторные заявки из нашего офиса будут ограничены нашей локальной линией DSL. Сервер удален с большей пропускной способностью.

Ответы, основанные на опыте, были бы замечательными, но любые предложения приветствуются.

ответ

8

Используйте инструмент ab (ApacheBench) командной строки, которая поставляется в комплекте с Apache (я только что обнаружил, этот большой маленький инструмент). В отличие от cURL или wget, ApacheBench был разработан для проведения стресс-тестов на веб-серверах (любой тип веб-сервера!). Он также генерирует множество статистических данных. Следующая команда отправит запрос POST-запроса , включая файл test.jpg, на номер http://localhost/ 100 раз, с 4 одновременными запросами.

ab -n 100 -c 4 -p test.jpg http://localhost/ 

Она производит так:

Server Software:   
Server Hostname:  localhost 
Server Port:   80 

Document Path:  /
Document Length:  0 bytes 

Concurrency Level:  4 
Time taken for tests: 0.78125 seconds 
Complete requests:  100 
Failed requests:  0 
Write errors:   0 
Non-2xx responses:  100 
Total transferred:  2600 bytes 
HTML transferred:  0 bytes 
Requests per second: 1280.00 [#/sec] (mean) 
Time per request:  3.125 [ms] (mean) 
Time per request:  0.781 [ms] (mean, across all concurrent requests) 
Transfer rate:   25.60 [Kbytes/sec] received 

Connection Times (ms) 
      min mean[+/-sd] median max 
Connect:  0 0 2.6  0  15 
Processing:  0 2 5.5  0  15 
Waiting:  0 1 4.8  0  15 
Total:   0 2 6.0  0  15 

Percentage of the requests served within a certain time (ms) 
    50%  0 
    66%  0 
    75%  0 
    80%  0 
    90%  15 
    95%  15 
    98%  15 
    99%  15 
100%  15 (longest request) 
+0

Очень круто, спасибо за обмен. – 2009-04-06 19:12:51

0

Возможно, я бы посоветовал вам использовать cURL и отправлять только случайные вещи (например, читать 10MB из /dev/urandom и кодировать его в base32), через POST-запрос и вручную сфабриковать тело для загрузки файла (это не ракетостроение).

Вилка этого сценария 100 раз, возможно, на нескольких серверах. Просто убедитесь, что системные администраторы не думают, что вы делаете DDoS, или что-то в этом роде

К сожалению, этот ответ остается немного расплывчатым, но, надеюсь, он поможет вам подтолкнуть вас на правильном пути.

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

Стресс-тестирование из одного и того же оборудования не будет хорошей идеей, так как вы будете выполнять двойную нагрузку на сервере: вычисление случайных данных, их упаковка, отправка его через стек TCP/IP (хотя, вероятно, не более Ethernet) и только тогда может сделать сервер своей магией. Если отправляющая часть передается на внешний подряд, вы получаете двойную (взятую с произвольной величиной зерно соли) производительность на принимающей стороне.

+0

Я думаю, вы бы сделать это на самом сервере или какой-то машины на одной и той же локальной сети? – Liam 2008-11-27 11:05:36

0

Автоматизация Selenium RC с использованием вашего любимого языка. Начните 100 потоков Selenium, каждый из которых вводит путь к файлу на вкладке и нажимает кнопку submit.

Вы можете генерировать 100 последовательно по имени файла, чтобы сделать цикл над ними easyily, или просто использовать один и тот же файл снова и снова