LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

Пытался отвечать по абзацам, но получается слишком длинно, поэтому просто приведу ряд существенных фактов.

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

2) Связать интересующее тебя «количество пользователей» и объективное «количество запросов в секунду» без детального анализа устройства и способа использования конкретного сайта невозможно, поэтому про «количество пользователей» пока что придётся забыть; аналогия из реального мира: допустим, тебе поставили задачу спроектировать, какого размера (в сантиметрах) и сколько электричества в сутки должен потреблять технический прибор на 5 человек, но не уточнили: это холодильник, телевизор, стиральная машина или микроавтобус. Очевидно, в таких условиях ты ничего сказать не сможешь.

3) Если тестируешь выдерживание нагрузки на сайт, то главным итогом работы будет количество обработанных запросов в секунду. ab его выдаёт в своём отчёте. Соответственно, он сравнивается с тем, что ты хочешь (меньше или больше) и узнаёшь, хватает этого железа или нет.

4) Надо учитывать, что нагрузка, которую создаёт ab, это совсем не то же самое что нагрузка, создаваемая реальными пользователями, и чем сложнее устроен сайт, тем больше между ними расхождение. Для сложных сайтов флуд запросами на один и тот же адрес малопоказателен. Да, теоретически можно просчитать заранее профиль запросов к сайту и всё спроектировать, но на практике это нецелесообразно - затраты на эту возню будут больше чем просто купить железо с большим запасом, не устраивая точных подгонок. Кроме того, этот запас будет в любом случае полезен на случай неожиданных ситуаций.

5) В твоём запуске ab было настроено -c 1000 - это 1000 параллельных запросов. При этом процессорных потоков у тебя явно меньше, реально работать будет не больше чем количество потоков, остальные будут ждать - либо в очереди процессов на процовое время, либо в очереди tcp-соединений, либо ещё где-то. Где именно будут ждать - зависит от настроек веб-сервера, пхп и скриптов сайта. «Ждать в очереди на проц» - самый плохой вариант, и чтобы его не случалось, у пхп есть настройка pm.max_children, куда надо прописать адекватное ограничение (для простых скриптов типа phpinfo это меньше чем количество процовых ядер, умноженных на 1.5 если есть гипертрединг, а для сложных сайтов отдельная история т.к. там скрипт не всегда занимает проц). Ставить -c заметно больше чем max_children смысла нет, это будет только искажать результаты.

Исправление firkax, :

Пытался отвечать по абзацам, но получается слишком длинно, поэтому просто приведу ряд существенных фактов.

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

2) Связать интересующее тебя «количество пользователей» и объективное «количество запросов в секунду» без детального анализа устройства и способа использования конкретного сайта невозможно, поэтому про «количество пользователей» пока что придётся забыть; аналогия из реального мира: допустим, тебе поставили задачу спроектировать, какого размера (в сантиметрах) и сколько электричества в сутки должен потреблять технический прибор на 5 человек, но не уточнили: это холодильник, телевизор, стиральная машина или микроавтобус. Очевидно, в таких условиях ты ничего сказать не сможешь.

3) Если тестируешь выдерживание нагрузки на сайт, то главным итогом работы будет количество обработанных запросов в секунду. ab его выдаёт в своём отчёте. Соответственно, он сравнивается с тем, что ты хочешь (меньше или больше) и узнаёшь, хватает этого железа или нет.

4) Надо учитывать, что нагрузка, которую создаёт ab, это совсем не то же самое что нагрузка, создаваемая реальными пользователями, и чем сложнее устроен сайт, тем больше между ними расхождение. Для сложных сайтов флуд запросами на один и тот же адрес малопоказателен. Да, теоретически можно просчитать заранее профиль запросов к сайту и всё спроектировать, но на практике это нецелесообразно - затраты на эту возню будут больше чем просто купить железо с большим запасом, не устраивая точных подгонок. Кроме того, этот запас будет в любом случае полезен на случай неожиданных ситуаций.

5) В твоём запуске ab было настроено -c 1000 - это 1000 параллельных запросов. При этом процессорных потоков у тебя явно меньше, реально работать будет не больше чем количество потоков, остальные будут ждать - либо в очереди процессов на процовое время, либо в очереди tcp-соединений, либо ещё где-то. Где именно будут ждать - зависит от настроек веб-сервера, пхп и скриптов сайта. «Ждать в очереди на проц» - самый плохой вариант, и чтобы его не случалось, у пхп есть настройка pm.max_children, куда надо прописать адекватное ограничение (для простых скриптов типа phpinfo это меньше чем количество процовых ядер, умноженных на 1.5 если есть гипертрединг, а для сложных сайтов отдельная история т.к. там скрипт не всегда занимает проц).

Исходная версия firkax, :

Пытался отвечать по абзацам, но получается слишком длинно, поэтому просто приведу ряд существенных.

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

2) Связать интересующее тебя «количество пользователей» и объективное «количество запросов в секунду» без детального анализа устройства и способа использования конкретного сайта невозможно, поэтому про «количество пользователей» пока что придётся забыть; аналогия из реального мира: допустим, тебе поставили задачу спроектировать, какого размера (в сантиметрах) и сколько электричества в сутки должен потреблять технический прибор на 5 человек, но не уточнили: это холодильник, телевизор, стиральная машина или микроавтобус. Очевидно, в таких условиях ты ничего сказать не сможешь.

3) Если тестируешь выдерживание нагрузки на сайт, то главным итогом работы будет количество обработанных запросов в секунду. ab его выдаёт в своём отчёте. Соответственно, он сравнивается с тем, что ты хочешь (меньше или больше) и узнаёшь, хватает этого железа или нет.

4) Надо учитывать, что нагрузка, которую создаёт ab, это совсем не то же самое что нагрузка, создаваемая реальными пользователями, и чем сложнее устроен сайт, тем больше между ними расхождение. Для сложных сайтов флуд запросами на один и тот же адрес малопоказателен. Да, теоретически можно просчитать заранее профиль запросов к сайту и всё спроектировать, но на практике это нецелесообразно - затраты на эту возню будут больше чем просто купить железо с большим запасом, не устраивая точных подгонок. Кроме того, этот запас будет в любом случае полезен на случай неожиданных ситуаций.

5) В твоём запуске ab было настроено -c 1000 - это 1000 параллельных запросов. При этом процессорных потоков у тебя явно меньше, реально работать будет не больше чем количество потоков, остальные будут ждать - либо в очереди процессов на процовое время, либо в очереди tcp-соединений, либо ещё где-то. Где именно будут ждать - зависит от настроек веб-сервера, пхп и скриптов сайта. «Ждать в очереди на проц» - самый плохой вариант, и чтобы его не случалось, у пхп есть настройка pm.max_children, куда надо прописать адекватное ограничение (для простых скриптов типа phpinfo это меньше чем количество процовых ядер, умноженных на 1.5 если есть гипертрединг, а для сложных сайтов отдельная история т.к. там скрипт не всегда занимает проц).