У меня периодически возникают проблемы с рабочими площадками. То они подвисают, то падают неожиданно, то редактора жалуются на необъяснимые тормоза. И вроде бы ещё вчера нормально работавшая площадка, а сегодня уже бешеный тормоз. И начинается вновь борьба за скорость. Самое сложное в определении падения производительности это понять собственно кто виноват. Что делать — этот вопрос как раз обычно проще.

Я уже писал о тестировании производительности с помощью утилиты ab. Но иногда бывает так: и площадка похожей производительности и стоимости, и скрипт одинаковый, и время тестирования примерно одинаковое, а результат разный. Что не так? Вариантов масса, но в принципе их можно разделить ( условно ) на две категории: проблемы сервака/VDS ( оверсел, тормозные диски, кривая ось и т.п. ) и криво настроеный софт ( апач, пхп, база и прочее ). В случае если проблема в VDS то что-то можно предъявить хостеру, ну или съехать с плохого VDS. И как раз в деле определения плохого VDS утилитка UNIX Benchmarks не заменима. Утилита тестирует ввод/вывод, проц и выдает отчет по пунктам и общюю оценку в попугаях. UNIX Benchmarks довольно известна. Её оценки авторитетны и их можно предъявить хостеру. По крайней мере это аргумент. Кроме того в сети не мало тестов разных VDS от разных хостеров вот здесь например , так же можно попросить тестовый вдс и перед перездом сравнить его с помощью UNIX Benchmarks. И если UNIX Benchmarks показал хорошую оценку, а сервак тормозит — значит проблема не в хостере, не в оверселе, а нужно искать проблему в настройках VDS или в своих скриптах.

Я, к примеру, оттестив один свои VDS обнаружил, что самый тормозящий проект сидит на самом быстром VDS. А потом обнаружил косяк в своих скриптах. Косяк устранил. Всё залетало. А ведь до этого дважды переустанавливал VDS и уже хотел съезжать. Если бы я вовремя узнал о UNIX Benchmarks то сильно бы съэкономил время и нервы.

Установка unixbench

У меня это было под FreeBSD

wget http://byte-unixbench.googlecode.com/files/UnixBench5.1.3.tgz
tar xzf UnixBench5.1.3.tgz
cd UnixBench
make

в этот момент установка может вылетать с ошибкой. В этом случае открываем в редакторе файл makefile , находим в нем строки:

ifdef GRAPHIC_TESTS
GRAPHIC_BINS = $(PROGDIR)/ubgears
else
GRAPHIC_BINS =
endif

И удаляем их или закомментируем. Ну а потом запускаем тест командой:

./Run

Тест идет долго, минут сорок. Заканчивается строками :

FINAL SCORE ЗНАЧЕНИЕ

Также можно сделать вывод в файл:

./Run > unixbench.log 2>&1 &

, и посмотреть результаты можно

cat unixbench.log

Собственно и всё.

На последок я оттестировал несколько площадок, что были у меня в распоряжении.

Это локальная машина в VMWare — FreeBSD 8, 512 мег, 1 проц:

Benchmark Run: 25 2012 22:48:29 — 23:16:46
unknown CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables 11857080.2 lps (10.0 s, 7 samples)
Double-Precision Whetstone 2476.9 MWIPS (9.9 s, 7 samples)
Execl Throughput 2714.9 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 77607.1 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 19982.3 KBps (30.1 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 21509.5 KBps (30.0 s, 2 samples)
Pipe Throughput 1281314.9 lps (10.0 s, 7 samples)
Pipe-based Context Switching 373427.6 lps (10.0 s, 7 samples)
Process Creation 9102.3 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 602.1 lpm (60.2 s, 2 samples)
Shell Scripts (8 concurrent) 133.2 lpm (60.1 s, 2 samples)
System Call Overhead 770209.3 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 11857080.2 1016.0
Double-Precision Whetstone 55.0 2476.9 450.3
Execl Throughput 43.0 2714.9 631.4
File Copy 1024 bufsize 2000 maxblocks 3960.0 77607.1 196.0
File Copy 256 bufsize 500 maxblocks 1655.0 19982.3 120.7
File Copy 4096 bufsize 8000 maxblocks 5800.0 21509.5 37.1
Pipe Throughput 12440.0 1281314.9 1030.0
Pipe-based Context Switching 4000.0 373427.6 933.6
Process Creation 126.0 9102.3 722.4
Shell Scripts (1 concurrent) 42.4 602.1 142.0
Shell Scripts (8 concurrent) 6.0 133.2 222.0
System Call Overhead 15000.0 770209.3 513.5
========
System Benchmarks Index Score 345.1

этот тест вроде как эталон для меня.

Самый дешевый ВДС у FastVPS под Debian, OVZ-1 500 Mhz/200 MB, 130 руб./мес. ( я здесь писал о них «Отзыв о FastVPS«):

Benchmark Run: Sat Feb 25 2012 18:03:13 — 18:47:33
1 CPU in system; running 1 parallel copy of tests

Dhrystone 2 using register variables 2424025.6 lps (10.0 s, 7 samples)
Double-Precision Whetstone 2955.5 MWIPS (10.1 s, 7 samples)
Execl Throughput 677.9 lps (29.7 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 93616.0 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 28292.6 KBps (30.1 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 217636.5 KBps (30.0 s, 2 samples)
Pipe Throughput 200158.2 lps (10.1 s, 7 samples)
Pipe-based Context Switching 60362.4 lps (10.0 s, 7 samples)
Process Creation 2141.7 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 695.3 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 92.2 lpm (60.5 s, 2 samples)
System Call Overhead 174029.1 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 2424025.6 207.7
Double-Precision Whetstone 55.0 2955.5 537.4
Execl Throughput 43.0 677.9 157.6
File Copy 1024 bufsize 2000 maxblocks 3960.0 93616.0 236.4
File Copy 256 bufsize 500 maxblocks 1655.0 28292.6 171.0
File Copy 4096 bufsize 8000 maxblocks 5800.0 217636.5 375.2
Pipe Throughput 12440.0 200158.2 160.9
Pipe-based Context Switching 4000.0 60362.4 150.9
Process Creation 126.0 2141.7 170.0
Shell Scripts (1 concurrent) 42.4 695.3 164.0
Shell Scripts (8 concurrent) 6.0 92.2 153.6
System Call Overhead 15000.0 174029.1 116.0
========
System Benchmarks Index Score 196.0

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

Старый ВДС от ruweb под нагрузкой. FreeBSD 6.3, Virtual CPU 1000Mhz, 768Mb, 1380 руб./мес.

Benchmark Run: Sat Feb 25 2012 17:30:22 — 18:08:41
unknown CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables 3237243.6 lps (10.0 s, 7 samples)
Double-Precision Whetstone 1668.8 MWIPS (10.0 s, 7 samples)
Execl Throughput 337.0 lps (29.7 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 31839.1 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 8548.5 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 26148.3 KBps (30.6 s, 2 samples)
Pipe Throughput 288701.6 lps (10.0 s, 7 samples)
Pipe-based Context Switching 18201.4 lps (10.0 s, 7 samples)
Process Creation 2778.4 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 1142.6 lpm (60.1 s, 2 samples)
Shell Scripts (8 concurrent) 195.0 lpm (60.1 s, 2 samples)
System Call Overhead 191668.9 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 3237243.6 277.4
Double-Precision Whetstone 55.0 1668.8 303.4
Execl Throughput 43.0 337.0 78.4
File Copy 1024 bufsize 2000 maxblocks 3960.0 31839.1 80.4
File Copy 256 bufsize 500 maxblocks 1655.0 8548.5 51.7
File Copy 4096 bufsize 8000 maxblocks 5800.0 26148.3 45.1
Pipe Throughput 12440.0 288701.6 232.1
Pipe-based Context Switching 4000.0 18201.4 45.5
Process Creation 126.0 2778.4 220.5
Shell Scripts (1 concurrent) 42.4 1142.6 269.5
Shell Scripts (8 concurrent) 6.0 195.0 325.0
System Call Overhead 15000.0 191668.9 127.8
========
System Benchmarks Index Score 133.5

А вот этот тест меня очень удивил. Диски полное говно. По процу тоже так себе. Итоговая оценка хуже чем у FastVPS за 130 рублей, хотя эта у рувеба стОит 1380. Я эту площадку использую уже года два. Линейка у рувеба уже год как сменилась. Вот видать всякий шлак в старых машинах и стоит. Однако этот VDS держит 200-300К хитов в сутки на WordPress и 1-2Тб трафика в мес. Так что я не жалуюсь, но ценник могли бы и опустить :) Перезжать вобщем надо.

Другой VDS от ruweb под нагрузкой. FreeBSD 8, Virtual CPU 2000Mhz, 1536Mb, 1380 руб./мес.

Benchmark Run: Sat Feb 25 2012 18:36:01 — 19:15:01
unknown CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables 14288139.5 lps (10.0 s, 7 samples)
Double-Precision Whetstone 3195.4 MWIPS (9.7 s, 7 samples)
Execl Throughput 1931.6 lps (29.5 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 80752.0 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 78172.5 KBps (30.2 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 60885.7 KBps (30.0 s, 2 samples)
Pipe Throughput 1514295.4 lps (10.0 s, 7 samples)
Pipe-based Context Switching 290660.1 lps (10.0 s, 7 samples)
Process Creation 6253.4 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 1399.0 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 225.5 lpm (60.8 s, 2 samples)
System Call Overhead 1196737.8 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 14288139.5 1224.3
Double-Precision Whetstone 55.0 3195.4 581.0
Execl Throughput 43.0 1931.6 449.2
File Copy 1024 bufsize 2000 maxblocks 3960.0 80752.0 203.9
File Copy 256 bufsize 500 maxblocks 1655.0 78172.5 472.3
File Copy 4096 bufsize 8000 maxblocks 5800.0 60885.7 105.0
Pipe Throughput 12440.0 1514295.4 1217.3
Pipe-based Context Switching 4000.0 290660.1 726.7
Process Creation 126.0 6253.4 496.3
Shell Scripts (1 concurrent) 42.4 1399.0 330.0
Shell Scripts (8 concurrent) 6.0 225.5 375.8
System Call Overhead 15000.0 1196737.8 797.8
========
System Benchmarks Index Score 477.4

А вот этот VDS как раз и тормозил. Стоит он как и предыдущий вдс — 1380 руб в мес, а производительность в попугаях чуть ли не в 4 раза выше, проц хорош, а диски так вообще в 10 раз местами. Вобщем потестив эти серваки, сравнив, я понял, что жаловаться не надо, а нужно копаться в скиптах.