середа, 28 листопада 2007 р.

Карти Яндекса та Google: перші враження від порівняння у 2007 році

У листопаді 2007 року, вже маючи досвід із картами Google, я придивився до карт Яндекса за адресою http://maps.yandex.ru. Загальний підхід був знайомим: інтерфейс трохи відрізнявся, але принцип роботи здавався схожим.

Перше враження й масштабування

Загалом перше знайомство залишило позитивне враження. Водночас можливості збільшення зображення мені здавалися помітно слабшими, ніж у Google. На переглянутих мною ділянках основна увага була зосереджена на Європі та Росії.

Москва й Київ у моїй перевірці

Фотографічне подання я тоді бачив для Москви. Київ у моєму перегляді був представлений значно простішою картографічною схемою. Вона здавалася мені не надто вдалою візуально, а для частини будинків бракувало номерів — це вже впливало на практичний пошук адреси.

середа, 21 листопада 2007 р.

Назви меню та робота дизайнера з вимогами: нотатки до прочитаного

У листопаді 2007 року я читав «Ководство» Артемія Лебедєва. Дві думки особливо зачепили: навіщо роздувати назви в інтерфейсі та чому дизайнерові варто слухати замовника, а не лише захищати кожен піксель свого макета.

Назва має встигнути передати зміст

У розділі 141 «Короче» розглядався дорожній щит: водієві потрібно швидко зрозуміти коротку вказівку. Перевантажене формулювання й незручна типографіка заважали цьому. Мені ця думка нагадала про довгі назви пунктів меню.

У меню людина зазвичай шукає дію або розділ. Якщо назва перетворюється на канцелярське речення, її складніше швидко відрізнити від сусідніх. Водночас короткість заради короткості теж не допомагає: скорочення має залишатися зрозумілим. Деталі можна пояснити вже всередині розділу, коли користувач його відкрив.

А що, коли замовник має рацію?

Інший уривок починався з провокаційного запитання: «А що, якщо замовник розумніший за тебе?» Мені в ньому важлива не суперечка про те, хто головніший, а готовність перевірити власне дизайнерське рішення.

У наведеному прикладі з формою пляшки автор підводив до думки, що конструкцію визначає практичне завдання й обмеження, а не лише бажання творця. Для інтерфейсу це означає: зручний вигляд потрібно пов’язувати з тим, що людина робить у програмі.

Замовник може краще знати робочий процес, типові помилки та звички користувачів. Дизайнер — запропонувати спосіб подати це зрозуміло. Замість боротьби за кожен піксель корисніше разом пройти конкретний сценарій: знайти потрібний пункт, виконати дію й перевірити, чи назви та розташування елементів справді допомагають.

пʼятниця, 16 листопада 2007 р.

Поштові скриньки Google наближалися до 5 ГБ: новина 2007 року

У листопаді 2007 року я помітив, що поштові скриньки Google вже наблизилися до 5 ГБ і продовжували зростати.

Тоді спостерігати за збільшенням доступного простору можна було просто на сторінці входу до пошти Google. Саме цей лічильник і привернув мою увагу: місткість скриньки змінювалася поступово.

четвер, 15 листопада 2007 р.

Інформація про «Корпорацію» у Вікіпедії: повідомлення 2007 року

У листопаді 2007 року ми додали до російськомовної Вікіпедії інформацію про наші програмні продукти та бренд RS™. Мене цікавила сама ідея спільної енциклопедії: читачі могли не лише знаходити пояснення термінів, а й доповнювати матеріали.

Які сторінки ми тоді згадували

  • Програма «Корпорація»: ru.wikipedia.org/wiki/Программа_Корпорация.
  • Бренд RS™: ru.wikipedia.org/wiki/RS™.
  • Програма «Корпорація-Салон»: ru.wikipedia.org/wiki/Программа_Салон.

Це були внесені нами відомості про власні розробки. Сам факт такого внеску не означає незалежної оцінки продукту або нагороди.

Візуальне створення вебсторінок у Google: досвід 2007 року

У листопаді 2007 року я вже писав про сервіси Google для корпоративної пошти: тоді згадував безкоштовні скриньки приблизно по 5 ГБ. А наступним відкриттям стало розміщення власних вебсторінок на серверах Google з візуальним редагуванням просто у браузері.

Сторінка за кілька секунд

Для прикладу я взяв нашу сторінку http://2i.kiev.ua й створив її варіант за адресою http://www.nerusoft.com-a.googlepages.com/index.htm. На підготовку саме цього прикладу пішло лише кілька секунд!

Мене вразило поєднання редактора й розміщення сторінки в одному вебінтерфейсі. Основа вже була готова, тому це був досвід швидкого перенесення й публікації сторінки, а не розробка всього сайту з нуля.

середа, 14 листопада 2007 р.

Сайт-візитка бренду: простий формат представлення компанії

У листопаді 2007 року я сів і швидко зібрав сайт-візитку нашої компанії — i1.kiev.ua. Вийшла легка сторінка без зайвих деталей. За стриманістю вона нагадувала мені Google.

Коротке знайомство й портал із подробицями

Сайт-візитка давав змогу швидко познайомитися з компанією. А якщо хотілося роздивитися все докладніше й потрапити під справжню лавину інформації — для цього був наш основний портал nerusoft.com :)

Участь у конкурсі Enthusiast Internet Award 2007

У листопаді 2007 року наші роботи брали участь у конкурсі Enthusiast Internet Award 2007.

Адреса конкурсу, яку ми тоді повідомляли: http://www.eaward.ru.

«Корпорація» у Windows Vista: досвід встановлення з Firebird 2.0.3

У листопаді 2007 року я встановлював нашу програму «Корпорація» у Windows Vista на комп’ютері одного із замовників. Сама програма стала без проблем — приблизно так само, як і в інших системах, з якими я тоді працював. А ось із сервером бази даних довелося повозитися.

Запити Windows: «Ви впевнені?»

Найпомітнішою відмінністю були постійні запити на підтвердження дій. Зізнаюся, вони мене добряче дратували. Після чергового «Ви впевнені, що хочете запустити програму?» хотілося пожартувати: Windows спитала, я погодився — тепер у всьому винен сам. :)

Утім, ці діалоги не завадили завершити встановлення «Корпорації». Основне технічне питання виникло на іншому рівні — під час підключення бібліотек до Firebird.

Firebird 2.0.0.x і бібліотеки UDF

У цій інсталяції версія Firebird 2.0.0.x не підхоплювала потрібні UDF-бібліотеки. Я завантажив і встановив Firebird 2.0.3. Після оновлення бібліотеки запрацювали, а програма змогла нормально працювати з базою.

Тут варто розрізняти мій результат встановлення та конкретні виправлення сервера. В офіційних примітках до гілки Firebird 2.0 описано, зокрема, виправлення CORE-1133 для локального протоколу XNET у Windows Vista ще у версії 2.0.1. Це інша проблема; пояснювати нею збій моїх UDF-бібліотек без додаткової діагностики було б неточно.

Підсумок встановлення

У замовника зв’язка «Корпорація» та Firebird 2.0.3 у Windows Vista запрацювала. Для мене головним практичним результатом було те, що сама програма перенеслася без труднощів, а проблему сервера бази даних вдалося усунути переходом із 2.0.0.x на 2.0.3.

неділя, 11 листопада 2007 р.

Виведення контенту у власній вебсистемі: навантажувальний тест

Продовжуючи наші тести у листопаді 2007 року, я перейшов від головної сторінки до сторінки з контентом: osan-koeln.net/our_city/. Хотілося побачити, що зміниться, коли сайт має вивести більше інформації.

Що перевіряли

Параметри залишилися такими самими: мільйон запитів і п’ять одночасних звернень. Довжина першого документа становила 91551 байт; у тесті головної сторінки того самого сайту було 33326 байтів. Відповідь формувалася для іншої адреси, тож ми зіставляли різні сценарії роботи однієї системи.

Повний журнал тесту

root@titan-r:~# ab -c 5 -n 1000000 http://osan-koeln.net/our_city/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking osan-koeln.net (be patient)
Completed 100000 requests
Completed 200000 requests
Completed 300000 requests
Completed 400000 requests
Completed 500000 requests
Completed 600000 requests
Completed 700000 requests
Completed 800000 requests
Completed 900000 requests
Finished 1000000 requests


Server Software:        nginx/0.4.13
Server Hostname:        osan-koeln.net
Server Port:            80

Document Path:          /our_city/
Document Length:        91551 bytes

Concurrency Level:      5
Time taken for tests:   17246.269764 seconds
Complete requests:      1000000
Failed requests:        7
   (Connect: 0, Length: 7, Exceptions: 0)
Write errors:           0
Non-2xx responses:      7
Total transferred:      1743045703 bytes
HTML transferred:       1356047278 bytes
Requests per second:    57.98 [#/sec] (mean)
Time per request:       86.231 [ms] (mean)
Time per request:       17.246 [ms] (mean, across all concurrent requests)
Transfer rate:          98.70 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       1
Processing:     0   85 128.2     82   25125
Waiting:        0   17  78.1     17   25043
Total:          0   85 128.2     82   25125

Percentage of the requests served within a certain time (ms)
  50%     82
  66%     91
  75%     96
  80%     99
  90%    108
  95%    118
  98%    134
  99%    151
 100%  25125 (longest request)

Результат: приблизно 4,79 години

Прогін тривав 17246.269764 секунди — приблизно 287,44 хвилини, або 4,79 години. Середня пропускна здатність становила 57.98 запиту/с. Для головної сторінки раніше було 190.38 запиту/с: у цьому сценарії показник зменшився приблизно у 3,28 раза.

Медіана затримки становила 82 мс, 95% запитів уклалися у 118 мс, 99% — у 151 мс. Найдовша відповідь тривала 25125 мс. Тобто поряд із типовими короткими відповідями був і запит із затримкою понад 25 секунд.

Є сім відхилень за довжиною відповіді та сім відповідей поза діапазоном 2xx. Із цього підсумкового журналу не видно їхніх конкретних кодів і причин. Я тоді назвав результат рекордом повільності серед наших перевірок, але він стосується саме цієї сторінки й навантаження.

Де я шукав причини

За моїми тодішніми спостереженнями, основою рушія був один великий PHP-файл. Я пов’язував затримки з витратами на його обробку. Проте без налаштувань PHP і вимірювання часу виконання не можна стверджувати, що на кожному запиті відбувалася повторна компіляція. У сучасному PHP, наприклад, OPcache зберігає скомпільований байткод; наявність такого механізму в інсталяції 2007 року цим журналом не встановлено.

Інша підозра стосувалася обсягу роботи сторінки: на ній виводилося одразу десять рубрик, а для пагінації отримувалися додаткові рядки. Це був напрямок для перевірки запитів до бази, способу підрахунку записів і формування HTML. Однак окремих вимірювань цих операцій у нотатці немає.

Також я звернув увагу на великі, не оптимізовані за розміром фотографії. На цьому сайті вони зберігалися у файлах на диску, а не в базі. Для браузера такі файли могли впливати на повне завантаження сторінки, але наведена команда ApacheBench зверталася лише до /our_city/. Вона не відтворювала автоматичне завантаження всіх зображень, як браузер, тому вплив їхнього розміру саме на цей результат не доведений.

Висновок після перевірки

Тест показав, що швидкість головної сторінки не описувала всю систему. Сторінка з більшим обсягом контенту відповідала істотно повільніше. Щоб усунути причину, потрібно було окремо перевіряти формування HTML, роботу з базою й завантаження медіафайлів, а не зводити всі витрати до одного показника.

Друга власна вебсистема: порівняльний тест 2007 року

Після першого тесту індивідуально розробленого сайту я вирішив перевірити ще одну таку систему. Адже власні розробки бувають різними, а швидкість може залежати й від наповнення сторінки. У листопаді 2007 року ми запустили на titan-r перевірку головної сторінки navstrechu.com.

Однаковий обсяг запитів — інший сайт

Параметри навантаження залишилися знайомими: один мільйон запитів, п’ять одночасно. Початкова довжина документа тут становила 20820 байтів, у відповіді зазначався nginx/0.4.13. За такого сценарію ми знову перевіряли одну адресу, а не повний шлях користувача сайтом.

Повний журнал вимірювання

root@titan-r:~# ab -c 5 -n 1000000 http://navstrechu.com/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking navstrechu.com (be patient)
Completed 100000 requests
Completed 200000 requests
Completed 300000 requests
Completed 400000 requests
Completed 500000 requests
Completed 600000 requests
Completed 700000 requests
Completed 800000 requests
Completed 900000 requests
Finished 1000000 requests


Server Software:        nginx/0.4.13
Server Hostname:        navstrechu.com
Server Port:            80

Document Path:          /
Document Length:        20820 bytes

Concurrency Level:      5
Time taken for tests:   2296.412062 seconds
Complete requests:      1000000
Failed requests:        0
Write errors:           0
Total transferred:      -462836480 bytes
HTML transferred:       -654836480 bytes
Requests per second:    435.46 [#/sec] (mean)
Time per request:       11.482 [ms] (mean)
Time per request:       2.296 [ms] (mean, across all concurrent requests)
Transfer rate:          -196.82 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:     5   10  12.0     10    5053
Waiting:        5    9   9.6      9    5051
Total:          5   10  12.0     10    5053

Percentage of the requests served within a certain time (ms)
  50%     10
  66%     12
  75%     13
  80%     14
  90%     17
  95%     18
  98%     21
  99%     23
 100%   5053 (longest request)

Мільйон запитів приблизно за 38 хвилин

Прогін завершився за 2296.412062 секунди — приблизно 38,27 хвилини. Середня швидкість становила 435.46 запиту/с. ApacheBench не зафіксував невдалих запитів або помилок запису.

Половина запитів уклалася у 10 мс, 95% — у 18 мс, 99% — у 23 мс. При цьому найдовша відповідь потребувала 5053 мс. Цей розрив між типовою та максимальною затримкою теж є частиною результату.

Від’ємні значення обсягу та швидкості передавання не можна трактувати як фізичний трафік. У журналі є аномалія лічильників; для встановлення її причини потрібні додаткові дані. Числа у первинному виводі збережено.

Чому висновок змінився

У попередньому тесті osan-koeln.net я отримав 190.38 запиту/с. Тут результат був приблизно у 2,29 раза вищим. Це вже показувало, наскільки різними можуть бути результати двох індивідуальних розробок, хоча причину різниці самі ці журнали не встановлюють.

Тоді я також записав оцінку, що цей сайт випереджав Joomla майже вдвічі. Для перевірки саме такого порівняння потрібен відповідний тест Joomla з узгодженими умовами. Натомість практичний висновок із двох власних систем був очевидний: одна назва класу «індивідуальна розробка» швидкодію не визначає.

Наступне запитання — сторінка з контентом

В обох випадках ми зверталися до головної сторінки, інформація на якій за змістом була переважно статичною. Це ще не доводить, що сервер віддавав готовий статичний файл: у журналі немає даних про спосіб формування відповіді та кешування.

Тому мене зацікавило інше: як зміниться швидкість, якщо перевіряти внутрішню сторінку з контентом? Саме такий наступний крок міг показати різницю між швидкою головною та іншими сценаріями роботи сайту.

Власноруч розроблена вебсистема: тест головної сторінки 2007 року

У листопаді 2007 року я вирішив перевірити поширене твердження: чи справді стандартні CMS працюють швидше за індивідуально розроблені сайти? Для цього запустив тривалий тест головної сторінки osan-koeln.net на сервері titan-r.

Умови перевірки

ApacheBench виконав мільйон запитів із паралельністю 5. Головна сторінка мала довжину 33326 байтів, а сервер представлявся як nginx/0.4.13. Це перевірка однієї адреси, без переходів між розділами й відтворення різних дій відвідувачів.

Повний журнал тесту

root@titan-r:~# ab -c 5 -n 1000000 http://osan-koeln.net/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking osan-koeln.net (be patient)
Completed 100000 requests
Completed 200000 requests
Completed 300000 requests
Completed 400000 requests
Completed 500000 requests
Completed 600000 requests
Completed 700000 requests
Completed 800000 requests
Completed 900000 requests
Finished 1000000 requests


Server Software:        nginx/0.4.13
Server Hostname:        osan-koeln.net
Server Port:            80

Document Path:          /
Document Length:        33326 bytes

Concurrency Level:      5
Time taken for tests:   5252.648192 seconds
Complete requests:      1000000
Failed requests:        0
Write errors:           0
Total transferred:      -646738368 bytes
HTML transferred:       -1033738368 bytes
Requests per second:    190.38 [#/sec] (mean)
Time per request:       26.263 [ms] (mean)
Time per request:       5.253 [ms] (mean, across all concurrent requests)
Transfer rate:          -120.24 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       4
Processing:    12   25  45.3     23   10587
Waiting:       11   23  40.7     22   10581
Total:         12   25  45.3     23   10587

Percentage of the requests served within a certain time (ms)
  50%     23
  66%     26
  75%     29
  80%     31
  90%     37
  95%     43
  98%     51
  99%     60
 100%  10587 (longest request)

Що показали цифри

Прогін тривав 5252.648192 секунди — приблизно 87,54 хвилини. Середній результат становив 190.38 запиту за секунду. У журналі немає невдалих запитів або помилок запису.

Медіанний час відповіді становив 23 мс; 95% запитів уклалися у 43 мс, 99% — у 60 мс. Водночас найдовший запит тривав 10587 мс, тобто понад десять секунд. Тому однієї середньої швидкості замало, щоб описати всі затримки.

Від’ємні значення обсягу переданих даних і швидкості передавання є аномаліями лічильників. Вони не описують реальний від’ємний трафік; причину в збереженому виводі не встановлено. Журнал залишено з цими значеннями.

Порівняння зі стандартними CMS

Тоді я записав, що більшість перевірених мною CMS були швидшими, «Бітрікс» — повільнішим, а Joomla випереджала цей сайт приблизно в півтора раза. Проте в цій нотатці немає парного журналу Joomla з тотожними даними та налаштуваннями. Саме наведений прогін не дозволяє перевірити таке співвідношення.

Моя початкова гіпотеза була проста: масове рішення може вигравати завдяки більшій увазі до налагодження й оптимізації. Але сам факт індивідуальної розробки нічого не говорить про якість її оптимізації. На результат впливають реалізація сторінки, запити до бази, кешування та серверне оточення.

Висновок для вибору системи

Цей тест дав числовий результат для конкретного сайту у 2007 році, але не встановив переможця між усіма готовими CMS та індивідуальними рішеннями. Для такого порівняння потрібні однакові дані, сценарії й умови роботи. Метод читання показників описано в документації ApacheBench.

понеділок, 5 листопада 2007 р.

Мільйон запитів до Joomla: результати й обмеження тесту 2007 року

У листопаді 2007 року ми провели на titan-r тривалий тест сайту на Joomla: один мільйон запитів до головної сторінки 3r.kiev.ua. Хотілося побачити, як сервер витримає великий обсяг однотипної роботи.

Мільйон запитів за 9,66 години

Тест виконував ApacheBench із п’ятьма одночасними запитами. У журналі зафіксовано 34785.675571 секунди — приблизно 9 годин 40 хвилин — і середню швидкість 28.75 запиту за секунду. Сервер відповідав як nginx/0.4.13; початкова довжина документа становила 10496 байтів.

Повний журнал вимірювання

root@titan-r:~# ab -c 5 -n 1000000 http://3r.kiev.ua/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking 3r.kiev.ua (be patient)
Completed 100000 requests
Completed 200000 requests
Completed 300000 requests
Completed 400000 requests
Completed 500000 requests
Completed 600000 requests
Completed 700000 requests
Completed 800000 requests
Completed 900000 requests
Finished 1000000 requests


Server Software:        nginx/0.4.13
Server Hostname:        3r.kiev.ua
Server Port:            80

Document Path:          /
Document Length:        10496 bytes

Concurrency Level:      5
Time taken for tests:   34785.675571 seconds
Complete requests:      1000000
Failed requests:        999925
   (Connect: 0, Length: 999925, Exceptions: 0)
Write errors:           0
Non-2xx responses:      11
Total transferred:      -1991124364 bytes
HTML transferred:       1831846342 bytes
Requests per second:    28.75 [#/sec] (mean)
Time per request:       173.928 [ms] (mean)
Time per request:       34.786 [ms] (mean, across all concurrent requests)
Transfer rate:          -55.90 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:     0  173  44.6    168    1743
Waiting:        0  167  44.1    162    1738
Total:          0  173  44.6    168    1743

Percentage of the requests served within a certain time (ms)
  50%    168
  66%    193
  75%    209
  80%    218
  90%    233
  95%    247
  98%    269
  99%    284
 100%   1743 (longest request)

Чому одного лічильника запитів недостатньо

Найбільше запитання тут викликає рядок Failed requests: 999925. Усі ці відхилення віднесено до Length: довжина відповіді відрізнялася від очікуваної. Це не доводить, що сервер відхилив майже всі з’єднання, але й назвати мільйон відповідей перевіреними коректними сторінками за таким журналом не можна.

Окремий лічильник показує 11 відповідей поза діапазоном 2xx. Точних кодів і тіл відповідей у збереженому виводі немає. Тому встановити, чи змінювалася звичайна динамічна сторінка, чи поверталося інше повідомлення, вже з цих підсумків неможливо.

Ще одна аномалія — від’ємні значення Total transferred та Transfer rate. Вони не можуть означати реальний від’ємний обсяг трафіку. Причина помилки лічильників у цьому записі не встановлена, тож оцінювати за ними передані дані не варто. Значення полів можна звірити з документацією ApacheBench.

Що сталося з оцінкою «1,2 мільйона сторінок на добу»

Після тесту я записав висновок про 1,2 мільйона сторінок на добу. Проте з наведеного часу така цифра безпосередньо не випливає: просте множення 28.75 запиту/с на 86400 секунд дає близько 2,48 мільйона запитів. І навіть ця арифметика не є прогнозом реальної добової місткості.

У тесті повторювалася одна адреса за фіксованої паралельності. Реальний відвідувач переходить між різними сторінками, а запити мають різну складність. До того ж тут залишилися невизначеними причини відмінностей довжини відповідей і помилки лічильників.

Практичний результат перевірки

Для нас це був тривалий прогін сервера з мільйоном запитів, а не доведена гарантія мільйона коректних сторінок для користувачів. Саме так і варто читати цей результат 2007 року: як вимірювання конкретної інсталяції, в якому поруч зі швидкодією видно питання, що потребували окремої перевірки.

неділя, 4 листопада 2007 р.

Energine на titan-r: навантажувальний тест 2007 року

У листопаді 2007 року я перевіряв Energine на сервері titan-r. Очікував, що використані в системі технології дадуть перевагу у швидкодії, але отриманий результат мене розчарував.

За моїми тодішніми тестами Energine виявилася повільнішою за Joomla; в тих самих нотатках я згадував і швидші результати phpNuke та Drupal. Водночас вона випередила протестований мною «Бітрікс». Щоправда, обсяг інформації на сайтах був неспівмірним — і це суттєво обмежувало таке порівняння.

Що саме вимірювалося

ApacheBench звертався до головної сторінки i1.kiev.ua. Параметр -n 100000 задавав кількість запитів, а -c 5 — п’ять одночасних запитів. У відповідях сервер представлявся як nginx/0.4.13, довжина документа становила 4023 байти.

Журнал тесту

root@titan-r:~# ab -c 5 -n 100000 http://i1.kiev.ua/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking i1.kiev.ua (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Finished 100000 requests


Server Software:        nginx/0.4.13
Server Hostname:        i1.kiev.ua
Server Port:            80

Document Path:          /
Document Length:        4023 bytes

Concurrency Level:      5
Time taken for tests:   4574.631725 seconds
Complete requests:      100000
Failed requests:        5
   (Connect: 0, Length: 5, Exceptions: 0)
Write errors:           0
Non-2xx responses:      5
Total transferred:      446779435 bytes
HTML transferred:       402280850 bytes
Requests per second:    21.86 [#/sec] (mean)
Time per request:       228.732 [ms] (mean)
Time per request:       45.746 [ms] (mean, across all concurrent requests)
Transfer rate:          95.38 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:     0  228 106.2    205    1613
Waiting:        0  227 106.1    204    1613
Total:          0  228 106.2    205    1613

Percentage of the requests served within a certain time (ms)
  50%    205
  66%    228
  75%    240
  80%    250
  90%    296
  95%    429
  98%    591
  99%    726
 100%   1613 (longest request)

Як читати результат

На 100 000 запитів пішло 4574.631725 секунди, а середня пропускна здатність становила 21.86 запиту за секунду. Половина запитів уклалася у 205 мс, 95% — у 429 мс; найдовший тривав 1613 мс.

Два рядки Time per request описують різні способи усереднення: 228.732 мс враховує рівень паралельності, а 45.746 мс — загальний час, поділений на кількість запитів. Друге число не означає, що окремий відвідувач чекав лише 45.746 мс.

Окремо зафіксовано п’ять невдалих запитів із відмінною довжиною відповіді та п’ять відповідей поза діапазоном 2xx. За підсумковим журналом не можна визначити їхні точні HTTP-коди чи причину зміни довжини. Опис цих полів наведено в документації ApacheBench.

Який висновок я зробив

Очікуваної переваги Energine у цій перевірці я не побачив. Але результат стосується конкретної сторінки, вмісту й серверного оточення 2007 року. Для висновку про самі CMS потрібне зіставлення однакового навантаження й однакових даних, а в моєму порівнянні ці умови не були витримані.

Drupal на сервері titan-r: результати навантажувального тесту 2007 року

У листопаді 2007 року я перевірив навантаження на сайт kiev2000.kiev.ua, побудований на Drupal. Було виконано 100 000 запитів із параметром паралельності 5. У журналі зафіксовано 415.438090 с, 240.71 запиту/с та нуль невдалих запитів.

Умови та журнал вимірювання

Я запускав ApacheBench на titan-r для головної сторінки сайту. У відповіді сервер повідомляв nginx/0.4.13, довжина документа становила 12 624 байти. Параметр -n 100000 задавав загальну кількість запитів, а -c 5 — паралельність; це не 100 000 одночасних відвідувачів.

root@titan-r:~# ab -c 5 -n 100000 http://kiev2000.kiev.ua/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking kiev2000.kiev.ua (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Finished 100000 requests


Server Software:        nginx/0.4.13
Server Hostname:        kiev2000.kiev.ua
Server Port:            80

Document Path:          /
Document Length:        12624 bytes

Concurrency Level:      5
Time taken for tests:   415.438090 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Total transferred:      1312500000 bytes
HTML transferred:       1262400000 bytes
Requests per second:    240.71 [#/sec] (mean)
Time per request:       20.772 [ms] (mean)
Time per request:       4.154 [ms] (mean, across all concurrent requests)
Transfer rate:          3085.27 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:    11   20   7.5     19     153
Waiting:       10   19   7.4     18     152
Total:         11   20   7.5     19     153

Percentage of the requests served within a certain time (ms)
  50%     19
  66%     21
  75%     24
  80%     26
  90%     31
  95%     35
  98%     39
  99%     43
 100%    153 (longest request)

Як читати ці результати

Середня пропускна здатність у цьому запуску — 240,71 запиту на секунду. Два рядки Time per request мають різний зміст: 20,772 мс отримано з урахуванням паралельності 5, а 4,154 мс — як загальний час, поділений на кількість завершених запитів. Друге число не означає, що кожна окрема відповідь надходила за 4 мс.

Медіана в таблиці — 19 мс; 95% запитів обслужено в межах 35 мс, найдовший тривав 153 мс. Це допомагає бачити розкид, який губиться за одним середнім значенням. Нуль у Failed requests описує критерії цього тесту, а не повноту всіх функціональних перевірок сайту.

Тоді я оцінив результат як вищий за мої тести Joomla у 6–10 разів. Це порівняння стосувалося конкретних запусків. Різні сайти, сторінки й налаштування не дають підстав оголошувати таку різницю властивістю CMS загалом.

Офіційна документація ApacheBench. Для повторного вимірювання потрібні власний або погоджений тестовий ресурс, зафіксовані налаштування кешу й однаковий сценарій. Тут перевірялася одна адреса, а не повний шлях роботи користувача.

Статична сторінка під навантаженням: тест Siege із 300 віртуальними користувачами

У листопаді 2007 року я запустив Siege для статичної сторінки rudjuk.kiev.ua: 300 віртуальних користувачів протягом однієї хвилини. За моїм тодішнім спостереженням, процесори були завантажені приблизно на 10–20%. Журнал показує 34910 hits, 583.78 trans/sec та нуль невдалих транзакцій.

Умови та журнал вимірювання

У команді -c300 задає кількість імітованих користувачів, -t1M — тривалість, а -d1 — паузи між діями. Такий сценарій потрібно відрізняти від безперервного потоку запитів без затримок. Нижче — повний вивід Siege 2.65b1 з цього запуску.

root@titan-r:~# siege -d1 -t1M -c300 rudjuk.kiev.ua
** siege 2.65b1
** Preparing 300 concurrent users for battle.
The server is now under siege...
Lifting the server siege...      done.                                                                      Transactions:                   34910 hits
Availability:                 100.00 %
Elapsed time:                  59.80 secs
Data transferred:             846.01 MB
Response time:                  0.01 secs
Transaction rate:             583.78 trans/sec
Throughput:                    14.15 MB/sec
Concurrency:                    3.33
Successful transactions:       35063
Failed transactions:               0
Longest transaction:            0.16
Shortest transaction:           0.00

Як читати ці результати

Параметр 300 віртуальних користувачів не слід ототожнювати зі значенням Concurrency 3.33 у звіті: кількість налаштованих учасників і виміряна одночасна активність — різні величини. Пауза між запитами також впливає на профіль навантаження. Також у первинному журналі Transactions і Successful transactions відрізняються: 34910 та 35063. Ці значення збережено без виправлення. Тоді я порівнював це з невдалим для мене сценарієм Joomla на 300 користувачів і був задоволений статичною сторінкою. Проте різні сценарії не є чистим порівнянням CMS. Невисоке завантаження процесорів також не доводить, що єдиним обмеженням залишалася оперативна пам’ять.

Параметри інструмента описано в офіційному посібнику Siege. Для власного порівняння слід узгодити тестовий ресурс, набір URL, затримки та тривалість і зберігати версію інструмента разом із результатами.

Мільйон запитів до статичної сторінки: тест titan-r у 2007 році

У листопаді 2007 року я перевірив, як titan-r впорається з великим числом запитів до статичної сторінки /rus/programs.htm. Було виконано 1 000 000 запитів із паралельністю 5. Журнал показує 139.518835 с — приблизно 2,3 хвилини — та 7167.49 запиту/с. За моїм тодішнім спостереженням, процесори були завантажені приблизно на 60% — тому враження від результату було дуже хорошим.

Умови та журнал вимірювання

Тестувався один файл завдовжки 50 823 байти, а не мільйон різних сторінок. У серверній відповіді зазначено nginx/0.4.13, версія клієнта — ApacheBench 2.0.40-dev. Повний журнал зберігає і результат, і проблемні поля звіту.

root@titan-r:~# ab -c 5 -n 1000000 http://www.rudjuk.kiev.ua/rus/programs.htm
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.rudjuk.kiev.ua (be patient)
Completed 100000 requests
Completed 200000 requests
Completed 300000 requests
Completed 400000 requests
Completed 500000 requests
Completed 600000 requests
Completed 700000 requests
Completed 800000 requests
Completed 900000 requests
Finished 1000000 requests


Server Software:        nginx/0.4.13
Server Hostname:        www.rudjuk.kiev.ua
Server Port:            80

Document Path:          /rus/programs.htm
Document Length:        50823 bytes

Concurrency Level:      5
Time taken for tests:   139.518835 seconds
Complete requests:      1000000
Failed requests:        0
Write errors:           0
Total transferred:      -481607552 bytes
HTML transferred:       -716607552 bytes
Requests per second:    7167.49 [#/sec] (mean)
Time per request:       0.698 [ms] (mean)
Time per request:       0.140 [ms] (mean, across all concurrent requests)
Transfer rate:          -3371.01 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0      10
Processing:     0    0   0.2      0      51
Waiting:        0    0   0.2      0      51
Total:          0    0   0.2      0      51

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

Як читати ці результати

У звіті є від’ємні значення Total transferred, HTML transferred і Transfer rate. Це аномалії обліку: їх не можна трактувати як фізично від’ємний обсяг передавання. Причину за наявним журналом остаточно не встановлено. Нульові округлені перцентилі також не означають буквальної відсутності часу обробки.

Офіційна документація ApacheBench. Порівнювати такі результати варто в однаковому середовищі та на погодженому тестовому ресурсі. Одна статична сторінка не відтворює роботу динамічного порталу з різними запитами до бази даних.

Швидкість статичної сторінки: історичний тест nginx на titan-r

У листопаді 2007 року я припускав, що статична сторінка має обслуговуватися значно швидше за динамічну. У нашій тодішній конфігурації її віддавав nginx без передавання запиту до Apache. Для 100 000 запитів журнал показує 13.784814 с і 7254.36 запиту/с.

Умови та журнал вимірювання

Я перевіряв один файл /rus/programs.htm завдовжки 50 823 байти з паралельністю 5. Такий сценарій показував обслуговування повторних запитів до статичного ресурсу, а не виконання різних операцій у CMS. Нижче — повний журнал запуску.

root@titan-r:~# ab -c 5 -n 100000 http://www.rudjuk.kiev.ua/rus/programs.htm
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.rudjuk.kiev.ua (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Finished 100000 requests


Server Software:        nginx/0.4.13
Server Hostname:        www.rudjuk.kiev.ua
Server Port:            80

Document Path:          /rus/programs.htm
Document Length:        50823 bytes

Concurrency Level:      5
Time taken for tests:   13.784814 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Total transferred:      810832704 bytes
HTML transferred:       787332704 bytes
Requests per second:    7254.36 [#/sec] (mean)
Time per request:       0.689 [ms] (mean)
Time per request:       0.138 [ms] (mean, across all concurrent requests)
Transfer rate:          57442.05 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:     0    0   0.2      0      30
Waiting:        0    0   0.2      0      30
Total:          0    0   0.2      0      30

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

Як читати ці результати

За тодішніми підрахунками я отримав різницю приблизно у 600–700 разів щодо свого тесту «Бітрікс» та у 200–250 разів щодо Joomla/Joostina. Але це були різні сценарії: готовий файл і сторінки CMS з іншою роботою на сервері. Такі коефіцієнти характеризували мої конкретні запуски, а не загальну швидкодію продуктів. Лічильник HTML transferred 787332704 bytes не узгоджується з простим множенням Document Length 50823 bytes на 100 000; без перевірки причини його не слід використовувати для висновків про пропускну здатність.

Офіційна документація ApacheBench. Після цього мені було цікаво перевірити значно більшу кількість звернень. Результат окремого тесту на мільйон запитів показує продовження цієї перевірки.

Сайт на «Бітрікс»: журнал навантажувального тесту 2007 року

У листопаді 2007 року ми перевірили сайт budmart.nerusoft.com на CMS «Бітрікс». Було виконано 100 000 запитів із паралельністю 5. Зафіксовано 9254.840333 с, 10.81 запиту/с і середній показник Time per request 462.742 мс.

Умови та журнал вимірювання

Тест стосувався головної сторінки завдовжки 25 847 байтів у тодішній серверній конфігурації. У звіті видно nginx/0.4.13 та ApacheBench 2.0.40-dev. Паралельність 5 означає п’ять одночасно виконуваних запитів, а 100 000 — їх загальну кількість за запуск.

root@titan-r:~# ab -c 5 -n 100000 http://budmart.nerusoft.com/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking budmart.nerusoft.com (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Finished 100000 requests


Server Software:        nginx/0.4.13
Server Hostname:        budmart.nerusoft.com
Server Port:            80

Document Path:          /
Document Length:        25847 bytes

Concurrency Level:      5
Time taken for tests:   9254.840333 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Total transferred:      -1653067296 bytes
HTML transferred:       -1710267296 bytes
Requests per second:    10.81 [#/sec] (mean)
Time per request:       462.742 [ms] (mean)
Time per request:       92.548 [ms] (mean, across all concurrent requests)
Transfer rate:          -174.43 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:   331  462 103.7    445    3993
Waiting:      317  446 102.6    430    3932
Total:        331  462 103.7    445    3993

Percentage of the requests served within a certain time (ms)
  50%    445
  66%    500
  75%    533
  80%    555
  90%    610
  95%    633
  98%    658
  99%    682
 100%   3993 (longest request)

Як читати ці результати

Повний запуск тривав близько 154 хвилин. Медіанний час у таблиці — 445 мс, 95% запитів уклалися в 633 мс, а найдовший тривав 3993 мс. Тому середнє значення 462,742 мс не описує кожну відповідь: у вимірюванні були й значно довші запити.

Від’ємні лічильники обсягу та швидкості передавання в журналі є аномальними; я тоді припускав переповнення лічильника, але самим цим журналом причина не встановлюється. Порівняння з Joomla приблизно у три рази описує ці конкретні вимірювання, а не будь-які інсталяції двох CMS.

Офіційна документація ApacheBench. Під час власного порівняння слід однаково визначити сторінки, кешування, версії й навантаження та тестувати ресурс із погодженим доступом. Інакше різницю між інсталяціями легко помилково приписати самій CMS.

Joomla / Joostina: продуктивність тестового сайту 2007 року

У листопаді 2007 року я доповнив попередній тест phpNuke перевіркою сайту на Joomla / Joostina за адресою 3r.kiev.ua. Ми готували цей варіант для нашого бренду на заміну тодішньому nerusoft.com. Виконано 100 000 запитів; у журналі наведено 3487.360345 с та 28.67 запиту/с.

Умови та журнал вимірювання

У запуску ApacheBench було задано паралельність 5; перевірялася головна сторінка завдовжки 10 422 байти. Сервер повідомляв nginx/0.4.13. Повний журнал важливий не лише для порівняння швидкості: він показує й те, за яким критерієм частину відповідей позначено невдалими.

root@titan-r:~# ab -c 5 -n 100000 http://3r.kiev.ua/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking 3r.kiev.ua (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Finished 100000 requests


Server Software:        nginx/0.4.13
Server Hostname:        3r.kiev.ua
Server Port:            80

Document Path:          /
Document Length:        10422 bytes

Concurrency Level:      5
Time taken for tests:   3487.360345 seconds
Complete requests:      100000
Failed requests:        9951
   (Connect: 0, Length: 9951, Exceptions: 0)
Write errors:           0
Total transferred:      1089389537 bytes
HTML transferred:       1042189537 bytes
Requests per second:    28.67 [#/sec] (mean)
Time per request:       174.368 [ms] (mean)
Time per request:       34.874 [ms] (mean, across all concurrent requests)
Transfer rate:          305.06 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:   116  173  44.4    168     402
Waiting:      112  167  43.9    162     397
Total:        116  173  44.4    168     402

Percentage of the requests served within a certain time (ms)
  50%    168
  66%    193
  75%    209
  80%    219
  90%    234
  95%    247
  98%    269
  99%    284
 100%    402 (longest request)

Як читати ці результати

Важливо врахувати 9951 невдалий запит за критерієм Length. Це не 9951 помилка з’єднання: у відповідному рядку Connect дорівнює нулю. ApacheBench може позначати відмінність довжини відповіді як помилку; за цим журналом не можна визначити, чи всі такі відповіді були функціонально неправильними. У нашому тодішньому порівнянні цей варіант Joomla виявився «важчим» і тест тривав довше, ніж для phpNuke. Це спостереження стосується конкретних сайтів і налаштувань. Далі я планував перевірити «Бітрікс»; журнал того тесту зберігає продовження серії.

Офіційна документація ApacheBench. У наведеному результаті медіана становить 168 мс, 95% відповідей — у межах 247 мс, найдовша — 402 мс. Для повторного порівняння потрібен погоджений тестовий ресурс та однаковий сценарій; історичний URL сам по собі не задає таких умов.

100 тисяч запитів до nerusoft.com: тест сервера titan-r

У листопаді 2007 року я зафіксував результат тесту nerusoft.com на сервері titan-r: виконано 100 000 запитів із паралельністю 5. У звіті наведено 3192.320346 с, 31.33 запиту/с і нуль невдалих запитів.

Умови та журнал вимірювання

Перевірялася головна сторінка завдовжки 94 796 байтів. Це багаторазове звернення до однієї адреси, а не обхід 100 000 різних сторінок. У журналі залишено версії nginx/0.4.13 та ApacheBench 2.0.40-dev, параметри запуску й усі первинні числа.

root@titan-r:~# ab -c 5 -n 100000 http://nerusoft.com/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking nerusoft.com (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Finished 100000 requests


Server Software:        nginx/0.4.13
Server Hostname:        nerusoft.com
Server Port:            80

Document Path:          /
Document Length:        94796 bytes

Concurrency Level:      5
Time taken for tests:   3192.320346 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Total transferred:      915365408 bytes
HTML transferred:       889665408 bytes
Requests per second:    31.33 [#/sec] (mean)
Time per request:       159.616 [ms] (mean)
Time per request:       31.923 [ms] (mean, across all concurrent requests)
Transfer rate:          280.02 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:   107  159  37.4    154     389
Waiting:      105  156  37.2    152     386
Total:        107  159  37.4    154     389

Percentage of the requests served within a certain time (ms)
  50%    154
  66%    173
  75%    185
  80%    192
  90%    208
  95%    225
  98%    248
  99%    264
 100%    389 (longest request)

Як читати ці результати

Запуск тривав приблизно 53,2 хвилини. Медіанний час у таблиці — 154 мс; 95% відповідей уклалися в 225 мс, найдовша тривала 389 мс. Ці значення доповнюють середні 31,33 запиту/с: пропускна здатність і затримка відповіді описують різні сторони одного вимірювання.

Розміри Total transferred і HTML transferred не слід без перевірки прирівнювати до очікуваного обсягу за Document Length і кількістю запитів: вихідні лічильники не узгоджуються з таким простим розрахунком. Усі числа збережено як у первинному звіті.

Офіційна документація ApacheBench. Для порівняння з іншими сайтами потрібно враховувати склад сторінки, серверну конфігурацію та кешування. Сам збіг кількості запитів не робить два запуски однаковими.

Навантажувальні тести titan-r: ApacheBench, http_load і Siege

У 2007 році ми перевіряли, як наш сервер titan-r витримує пікові навантаження. Для тестів використали сайт nerusoft.com на phpNuke під брендом RS™. Програма випробувань включала ApacheBench, http_load та Siege, а також спостереження за VSZ, RSS, CPU і використанням пам’яті.

Умови та журнал вимірювання

У плані були повторні запуски після перезапуску середовища й спостереження через ps aux. Окремі значення використання пам’яті тут не записані, тому за цим журналом можна оцінювати показники HTTP-тестів, але не робити кількісних висновків про витрати RAM. Нижче залишено повний вивід із командами.

===== Тестування за допомогою Apache Benchmark =====
# Вимірювання пам’яті (ps aux: VSZ "virtual set size" и RSS "resident set size").
# Тестування ApacheBenchmark (двічі поспіль)

root@titan-r:~# ab -c 5 -n 1000 http://nerusoft.com/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking nerusoft.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Finished 1000 requests


Server Software:        nginx/0.4.13
Server Hostname:        nerusoft.com
Server Port:            80

Document Path:          /
Document Length:        94796 bytes

Concurrency Level:      5
Time taken for tests:   31.881701 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      95053000 bytes
HTML transferred:       94796000 bytes
Requests per second:    31.37 [#/sec] (mean)
Time per request:       159.409 [ms] (mean)
Time per request:       31.882 [ms] (mean, across all concurrent requests)
Transfer rate:          2911.54 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:   109  158  37.3    153     313
Waiting:      107  156  37.1    150     310
Total:        109  158  37.3    153     313

Percentage of the requests served within a certain time (ms)
  50%    153
  66%    172
  75%    185
  80%    191
  90%    208
  95%    224
  98%    249
  99%    267
 100%    313 (longest request)


=================================================
# Вимірювання пам’яті та використаного процесорного часу (ps aux: VSZ, RSS, %CPU, %MEM)
# Перезапуск фреймворку
# Тестування ApacheBenchmark (двічі поспіль)
ab -c 100 -n 10000 http://nerusoft.com/

root@titan-r:~# ab -c 100 -n 10000 http://nerusoft.com/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking nerusoft.com (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Finished 10000 requests


Server Software:        nginx/0.4.13
Server Hostname:        nerusoft.com
Server Port:            80

Document Path:          /
Document Length:        94796 bytes

Concurrency Level:      100
Time taken for tests:   258.190002 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      950530000 bytes
HTML transferred:       947960000 bytes
Requests per second:    38.73 [#/sec] (mean)
Time per request:       2581.900 [ms] (mean)
Time per request:       25.819 [ms] (mean, across all concurrent requests)
Transfer rate:          3595.22 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.3      0       4
Processing:   199 2572 1352.8   2296   38015
Waiting:      196 2564 1350.7   2290   38012
Total:        203 2572 1352.8   2296   38015

Percentage of the requests served within a certain time (ms)
  50%   2296
  66%   2584
  75%   2809
  80%   2979
  90%   3481
  95%   3974
  98%   4784
  99%   6141
 100%  38015 (longest request)




======= Тестування за допомогою http_load ===========
# Вимірювання пам’яті та використаного процесорного часу.
# Перезапуск фреймворку
# Вимірювання http_load

http_load -rate 10 -seconds 5 nerusoft.com


======== Тестування за допомогою siege ===========
# Вимірювання пам’яті та використаного процесорного часу.
# Перезапуск фреймворку
# Тест Siege з 50 одночасними користувачами протягом однієї хвилини.
siege -d1 -t1M -c50 nerusoft.com

root@titan-r:~# siege -d1 -t1M -c50 nerusoft.com
** siege 2.65b1
** Preparing 50 concurrent users for battle.
The server is now under siege...
Lifting the server siege...      done.                                                                                                                      
Transactions:                    2312 hits
Availability:                 100.00 %
Elapsed time:                  60.57 secs
Data transferred:             209.03 MB
Response time:                  0.79 secs
Transaction rate:              38.17 trans/sec
Throughput:                     3.45 MB/sec
Concurrency:                   30.30
Successful transactions:        2312
Failed transactions:               0
Longest transaction:            8.86
Shortest transaction:           0.20

================================================
# Тест Siege з 100 одночасними користувачами протягом однієї хвилини.
siege -d1 -t1M -c100 nerusoft.com

root@titan-r:/etc/apache2# siege -d1 -t1M -c100 nerusoft.com
** siege 2.65b1
** Preparing 100 concurrent users for battle.
The server is now under siege...
Lifting the server siege...      done.                                                                                                                      
Transactions:                    2318 hits
Availability:                 100.00 %
Elapsed time:                  60.48 secs
Data transferred:             209.56 MB
Response time:                  2.02 secs
Transaction rate:              38.33 trans/sec
Throughput:                     3.46 MB/sec
Concurrency:                   77.44
Successful transactions:        2318
Failed transactions:               0
Longest transaction:           23.29
Shortest transaction:           0.25

======================================================
# Тест Siege з 150 одночасними користувачами протягом однієї хвилини.
siege -d1 -t1M -c150 nerusoft.com

root@titan-r:/etc/apache2# siege -d1 -t1M -c150 nerusoft.com
** siege 2.65b1
** Preparing 150 concurrent users for battle.
The server is now under siege...
Lifting the server siege..      done.                                                                                                                       
Transactions:                    2337 hits
|Availability:                100.00 %
Elapsed time:                  60.47 secs
Data transferred:             211.28 MB
Response time:                  3.24 secs
Transaction rate:              38.65 trans/sec
Throughput:                     3.49 MB/sec
Concurrency:                  125.19
Successful transactions:        2337
Failed transactions:               0
Longest transaction:           25.83
Shortest transaction:           0.26


======================================================
# Тест Siege з 200 одночасними користувачами протягом однієї хвилини.

siege -d1 -t1M -c200 nerusoft.com

root@titan-r:/etc/nginx# siege -d1 -t1M -c200 nerusoft.com
** siege 2.65b1
** Preparing 200 concurrent users for battle.
The server is now under siege...
Lifting the server siege...      done.                                                                        
Transactions:                    2317 hits
Availability:                 100.00 %
Elapsed time:                  59.80 secs
Data transferred:             209.47 MB
Response time:                  4.41 secs
Transaction rate:              38.75 trans/sec
Throughput:                     3.50 MB/sec
Concurrency:                  170.79
Successful transactions:        2317
Failed transactions:               0
Longest transaction:           25.17
Shortest transaction:           0.32

Як читати ці результати

ApacheBench: швидкість і затримка

У першому ApacheBench-тесті наведено 31.37 запиту/с для 1000 запитів, у другому — 38.73 для 10 000 запитів. У серії Siege зі зростанням заданої кількості користувачів від 50 до 200 частота транзакцій залишалася близько 38/с, а час відповіді зростав. Для http_load записано команду, але результату не наведено — його не можна домислювати.

Siege: більше користувачів, довше очікування

Віртуальні користувачіТранзакції/сСередній час, сНевдалі транзакції
5038,170,790
10038,332,020
15038,653,240
20038,754,410

Ця серія показує, чому одного показника «усі запити завершилися» замало. Частота транзакцій трималася майже на одному рівні, а середнє очікування росло від 0,79 до 4,41 с. Це ознака обмеження пропускної здатності саме в даному сценарії; журнал не встановлює, який ресурс був вузьким місцем.

http_load: команда без результату

За описом http_load від ACME, останній аргумент задає файл зі списком URL. Отже, nerusoft.com у наведеній команді мав би бути назвою такого файла, а не просто адресою сервера. Вміст файла й фактичний вивід тут відсутні — порівнювати його швидкість із ApacheBench чи Siege немає на чому.

Знімок тестування

Історичний знімок навантажувального тестування сервера titan-r

Офіційна документація ApacheBench. Параметри імітації користувачів та затримок пояснює також посібник Siege. Для власного тесту погодьте ресурс, навантаження й критерії прийнятного часу відповіді; нуль невдалих транзакцій не замінює цих критеріїв.

Калькулятор K2: від запитання про ціну до готової комерційної пропозиції

«А скільки коштуватиме інша комплектація?» — природне запитання покупця. Якщо для відповіді менеджер щоразу відкриває таблицю, шукає коефіці...