Bash-скрипт для тестирования PHP-скрипта с помощью ApacheBench (AB)
12.10.2010 технологии изучение Линукса
Классная штука, этот ApacheBench, здорово нагружает. Искал программу для нагрузочного тестирования, везде натыкался на ab, а потом ещё и в комментах посоветовали. Поставил. Доволен.
Зачем ещё дополнительный скрипт?
Чтобы максимально уменьшить ручной труд. Например, если я делаю имитацию 1000 запросов от трёх гиперхолериков через ab, на этот процесс тратится примерно 3 минуты. Но за это время проблема может проявиться, а может и нет. Она, проблема эта, вообще очень трудноуловимая! И что ж делать, каждые три минуты что ли запускать скрипт и на бумажку записывать статистику? Не, это не для меня, тем более я спать уже хочу.
В общем, набросал скриптик (посмотрите или скачайте), который в цикле запускает ab с нужными параметрами, проверяет файл на сбросы, и если сброс был — фиксирует это. Кроме того, скрипт перезапускает сервер, если он вдруг падает в fork.
Вот теперь можно и поспать, а машина пусть работает часика три-четыре.
Хотя не знаю, смогу ли заснуть, уж очень увлечён этой «научно-исследовательской работой» :) Иногда проблемы вгоняют в тоску, но часто они весьма интересны и позволяют узнать много нового. Вот сегодня, например, в очередной раз убедился в потрясающем удобстве и гибкости UNIX.
P.S. Скрипт надо запускать от суперпользователя.
Апачбенчи детям не игрушки. Стресс-тест опасен!
P.P.S. Если планируете использовать это для своих нужд, скриптик, конечно, следует поправить в некоторых местах. У вас тестируемый PHP-скрипт и окружение могут быть совсем другими. Если же именно Daos хотите потестировать, обратите внимание на строчку 36 (grep test@stress), она проверяет в файле статистики тестовый адрес рекламодателя test@stress.OK.com, то есть для успешной работы в ротации должна быть строчка от такого рекламодателя. Иначе скрипт будет считать, что файл повреждён.
P.P.P.S. Процесс идёт.
Когда начинал писать эту заметку, скрипт отработал примерно 200 циклов, а теперь уже 400. За это время было 10 перезагрузок сервера и 9 сбросов.
Маловато сбросов, конечно, для статистики, но уже какие-то цифры. Правильное решение должно быть устойчивым, чтобы ни одного сброса не было вообще.
А ещё я думаю, что файловая система тоже сильно влияет на вероятность проявления этого бага. У меня JFS сейчас, а какая чаще всего будет на серверах у клиентов? ХЗ.
P.P.P.P.S. Иногда надо спать!
Заменил скрипт, переделал. Раньше код перезапуска сервера вызывался последним, из-за этого сбросы могли фиксироваться из-за отказов сервера, хотя фактически файл, может, и не повреждался вовсе в этом случае. Сейчас работает точнее. Пришлось запустить заново, и теперь уж точно спать. На сегодня мозгу хватит пищи, пусть во сне переваривает. Файл обновил, код для просмотра тоже — http://pastie.org/1214748
Проснулся. Скрипт прошёл 1000 циклов, за это время было зафиксировано 25 сбросов и 12 перезагрузок сервера. Ну, это уже какие-то цифры, работать можно.
Этот материал входит в цикл статей об эволюции функций чтения/записи в Daos. Следующая статья уже есть, она третья в цикле.
Комментарии
Комментирование этой статьи закрыто.
Тормоз, а что это за WM у тебя? Перешел таки на DWM или это такое издевательство над xfce?
Кстати, не стоит забывать, что сервер может ложится просто под нагрузкой, даже при пустом php файле.
>cat /tmp/stress-ab.log | tail -n 60
tail -60 /tmp/stress-ab.log
Интересно как много людей будут ставить продукт на Мангуст? Не разумней ли тестировать на более распространенном окружении?
Ну и пути лучше сразу в переменные выносить
Ты всеже доиграешься что винт слетит, бекапы уже сделал :)?
Белый негр, да, перешёл на DWM и доволен как слон.
Lusever, может, конечно, но тут уж что поделаешь?
Michael_XII, делаю так, чтобы работало где угодно, ставить толстенный Apache только потому что он популярен, я не хочу. А вам письмо пришло? :)
Миша, что-то и не подумал про бэкапы, да мне сейчас их особо и некуда. Надеюсь, всё будет хорошо. Я везучий.
Дропбокс, например
DWM, а какже юникод? Лучше уж awesom, хотя я сам dwm долгое время использовал, но потом пересел на отечетсвенный форк awesome‘а, там название на букву е, не помню точно. xft хотелось уж очень
Под Dropbox нормального консольного клиента не нашёл, какое-то питонячье красноглазие предлагается только. А с графическим мне уже неудобно работать.
В холивары не хочу вступать. Нравится тебе гламурный awesome, пользуйся, я не против :)
я не про гламур, я про крякозябры в тайтлах, или у тебя они вообще отключены ? и разве xft это гламур ? может у тебя еще w3m настольный браузер :)?
пардон, по скрину понятно что к чему, но на моей памяти юникод dwm не держал. патченый?
Нет, просто всё меняется. Из патчей только раскладка колонками (которой почти не пользуюсь).
прикольно, чтоли поставить себе :)
Нафиг? :) Если нормально работает то, что тебя устраивает — не трожь.
Тормоз, а тебе не нужны «плюшки» типа блютуса, быстрых клавиш для громкости, настроек там всяких? Как оно вообще живется под «тупо» оконным менеджером? Может, напишешь статейку? ;)
Блютуса нет, громкость регулирую крутилкой колонок или в mplayer. Каких именно настроек мне может не хватать?
Живётся отлично. Статейку писать лень, честно говоря :) Да и видишь, сколько дел сейчас. Посмотрим, если будет настроение — напишу.