SlideShare ist ein Scribd-Unternehmen logo
1 von 12
Downloaden Sie, um offline zu lesen
gevent для эмуляции нагрузки
АЛЕКСАНДР КОЛЕСЕНЬ
ПРОБЛЕМА

• server-side на python: REST JSON API
• nginx, apache2+mod_wsgi в prefork
• MySQL/InnoDB
• bottle.py
• chef+fabric
• nagios+NewRelic
• Jenkins CI
ПРОБЛЕМА

Выдержит ли slashdot-эффект?
ЗАДАЧА

• тестирование производительности
• эмуляция “Интернета”
• на AWS/EC2
• как можно более дешевле
ЗАДАЧА

• раз в сутки стартуем perftest-кластер из Jenkins
• разворачиваем окружение, chef
• заливаем последний билд, fabric
• тестируем производительность
• снимаем и публикуем метрики
• убиваем кластер чтобы не тратить деньги
РЕШЕНИЕ: вариант

• ab, siege?
• не очень удобно
• хотелось бы запускать из Python
РЕШЕНИЕ: вариант

• нужен tool на Python
• у нас есть функциональные тесты
• хотелось бы использовать их для perftest
• NetworkIO-bound workload
• нужен Async-tool
• Twisted, Tornado?
РЕШЕНИЕ: gevent!

• cooperative-сокеты в green-тредах
• запускаем N green-тредов с func-tests
• без! доработки в callback-стиле
• получаем MAX утилизацию сети с MIN CPU,MEM
ДЕТАЛИ: gevent

• green-треды
• cooperative-сокеты
• monkey-patching
• работает поверх libev (epoll, kqueue)
ПРИМЕР: gevent

from gevent import monkey; monkey.patch_all()
def fetch_url(url):
while True:
data = urllib2.urlopen(url).read()

def main(urls):
gs = [gevent.spawn(fetch_url, url) for url in urls]
gevent.joinall(gs)

if __name__ == ’__main__’:
print main(["http://google.com/"]*1024)
РЕЗУЛЬТАТ

• 5K req/s с одного t1.micro за пару центов в час
• тестирование производительности каждый день
• автоматизировано через Jenkins, chef, fabric
• используем стандартные функциональные тесты
СПАСИБО ЗА ВНИМАНИЕ. ВОПРОСЫ

gevent
http://www.gevent.org
http://twit.tv/show/floss-weekly/238
http://www.youtube.com/watch?v=FITsetDUKJ0

Александр Колесень
mailto:alexander.kolesen@gmail.com
https://twitter.com/imm0use
https://plus.google.com/107935551373006842102/

Weitere ähnliche Inhalte

Was ist angesagt?

My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25Alex Chistyakov
 
Ansible in the enterprise
Ansible in the enterpriseAnsible in the enterprise
Ansible in the enterpriseAlex Chistyakov
 
Скоростное тестирование Rails / Александр Балашов (Evrone)
Скоростное тестирование Rails / Александр Балашов (Evrone)Скоростное тестирование Rails / Александр Балашов (Evrone)
Скоростное тестирование Rails / Александр Балашов (Evrone)Ontico
 
Мы делили апельсин
Мы делили апельсинМы делили апельсин
Мы делили апельсинOlga Lavrentieva
 
Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков" Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков" Fwdays
 
Введение в Akka
Введение в AkkaВведение в Akka
Введение в AkkaZheka Kozlov
 
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...Ontico
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Anton Turetsky
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupBadoo Development
 
My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014Alex Chistyakov
 
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»FDConf
 
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)Ontico
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»WrikeTechClub
 
Devconf-2015 Тестируем инфраструктуру как код
Devconf-2015 Тестируем инфраструктуру как кодDevconf-2015 Тестируем инфраструктуру как код
Devconf-2015 Тестируем инфраструктуру как кодIgor Kurochkin
 
Workflows в Express 42
Workflows в Express 42Workflows в Express 42
Workflows в Express 42Igor Kurochkin
 
Vagrant: плагины и гастрономический фестиваль
Vagrant: плагины и гастрономический фестивальVagrant: плагины и гастрономический фестиваль
Vagrant: плагины и гастрономический фестивальNikita Borzykh
 

Was ist angesagt? (19)

My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25
 
Ansible in the enterprise
Ansible in the enterpriseAnsible in the enterprise
Ansible in the enterprise
 
Docker
DockerDocker
Docker
 
Скоростное тестирование Rails / Александр Балашов (Evrone)
Скоростное тестирование Rails / Александр Балашов (Evrone)Скоростное тестирование Rails / Александр Балашов (Evrone)
Скоростное тестирование Rails / Александр Балашов (Evrone)
 
Мы делили апельсин
Мы делили апельсинМы делили апельсин
Мы делили апельсин
 
Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков" Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков"
 
Введение в Akka
Введение в AkkaВведение в Akka
Введение в Akka
 
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
 
My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014
 
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
 
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»
 
Devconf-2015 Тестируем инфраструктуру как код
Devconf-2015 Тестируем инфраструктуру как кодDevconf-2015 Тестируем инфраструктуру как код
Devconf-2015 Тестируем инфраструктуру как код
 
Workflows в Express 42
Workflows в Express 42Workflows в Express 42
Workflows в Express 42
 
Using Ansible
Using AnsibleUsing Ansible
Using Ansible
 
Vagrant: плагины и гастрономический фестиваль
Vagrant: плагины и гастрономический фестивальVagrant: плагины и гастрономический фестиваль
Vagrant: плагины и гастрономический фестиваль
 

Andere mochten auch

04/14/13 PUBLIC NOTICE (03/11/13 FAX TO BARACK OBAMA) - kannada
04/14/13  PUBLIC NOTICE (03/11/13 FAX TO BARACK OBAMA) - kannada04/14/13  PUBLIC NOTICE (03/11/13 FAX TO BARACK OBAMA) - kannada
04/14/13 PUBLIC NOTICE (03/11/13 FAX TO BARACK OBAMA) - kannadaVogelDenise
 
International economics + reasons to trade
International economics + reasons to tradeInternational economics + reasons to trade
International economics + reasons to tradePaolaReyesR
 
Pretty Good Practices/Productivity
Pretty Good Practices/ProductivityPretty Good Practices/Productivity
Pretty Good Practices/Productivityciconf
 
Belarusian thank you to republic of ecuador (asylum of julian assange)
Belarusian   thank you to  republic of ecuador (asylum of julian assange)Belarusian   thank you to  republic of ecuador (asylum of julian assange)
Belarusian thank you to republic of ecuador (asylum of julian assange)VogelDenise
 
Romanian thank you to republic of ecuador (asylum of julian assange)
Romanian   thank you to  republic of ecuador (asylum of julian assange)Romanian   thank you to  republic of ecuador (asylum of julian assange)
Romanian thank you to republic of ecuador (asylum of julian assange)VogelDenise
 
052412 Lithuanian
052412   Lithuanian052412   Lithuanian
052412 LithuanianVogelDenise
 
SYRIA CRISIS - (USA) CHEMICAL WEAPONS ATTACK (yiddish)
SYRIA CRISIS - (USA) CHEMICAL WEAPONS ATTACK (yiddish)SYRIA CRISIS - (USA) CHEMICAL WEAPONS ATTACK (yiddish)
SYRIA CRISIS - (USA) CHEMICAL WEAPONS ATTACK (yiddish)VogelDenise
 
052412 Indonesian
052412   Indonesian052412   Indonesian
052412 IndonesianVogelDenise
 
060812 EEOC Response(ARMENIAN)
060812   EEOC Response(ARMENIAN)060812   EEOC Response(ARMENIAN)
060812 EEOC Response(ARMENIAN)VogelDenise
 
061012 Pink Slip (CZECH)
061012   Pink Slip (CZECH)061012   Pink Slip (CZECH)
061012 Pink Slip (CZECH)VogelDenise
 
061012 Pink Slip (KANNADA)
061012   Pink Slip (KANNADA)061012   Pink Slip (KANNADA)
061012 Pink Slip (KANNADA)VogelDenise
 
061012 Pink Slip (SERBIAN)
061012   Pink Slip (SERBIAN)061012   Pink Slip (SERBIAN)
061012 Pink Slip (SERBIAN)VogelDenise
 
061012 Pink Slip (ROMANIAN)
061012   Pink Slip (ROMANIAN)061012   Pink Slip (ROMANIAN)
061012 Pink Slip (ROMANIAN)VogelDenise
 
061012 Pink Slip (IRISH)
061012   Pink Slip (IRISH)061012   Pink Slip (IRISH)
061012 Pink Slip (IRISH)VogelDenise
 
U.S. Navy Seals SLAM Obama
U.S. Navy Seals SLAM ObamaU.S. Navy Seals SLAM Obama
U.S. Navy Seals SLAM ObamaVogelDenise
 
050113 fax to judy clarke (boston marathon bombing) - swahili
050113   fax to judy clarke (boston marathon bombing) - swahili050113   fax to judy clarke (boston marathon bombing) - swahili
050113 fax to judy clarke (boston marathon bombing) - swahiliVogelDenise
 
140916 가리왕산 웹 홍보물 완성
140916  가리왕산 웹 홍보물 완성140916  가리왕산 웹 홍보물 완성
140916 가리왕산 웹 홍보물 완성Hyogyeong Bak
 

Andere mochten auch (20)

052412 Welsh
052412   Welsh052412   Welsh
052412 Welsh
 
04/14/13 PUBLIC NOTICE (03/11/13 FAX TO BARACK OBAMA) - kannada
04/14/13  PUBLIC NOTICE (03/11/13 FAX TO BARACK OBAMA) - kannada04/14/13  PUBLIC NOTICE (03/11/13 FAX TO BARACK OBAMA) - kannada
04/14/13 PUBLIC NOTICE (03/11/13 FAX TO BARACK OBAMA) - kannada
 
120924 actividades
120924 actividades120924 actividades
120924 actividades
 
International economics + reasons to trade
International economics + reasons to tradeInternational economics + reasons to trade
International economics + reasons to trade
 
Pretty Good Practices/Productivity
Pretty Good Practices/ProductivityPretty Good Practices/Productivity
Pretty Good Practices/Productivity
 
Belarusian thank you to republic of ecuador (asylum of julian assange)
Belarusian   thank you to  republic of ecuador (asylum of julian assange)Belarusian   thank you to  republic of ecuador (asylum of julian assange)
Belarusian thank you to republic of ecuador (asylum of julian assange)
 
Romanian thank you to republic of ecuador (asylum of julian assange)
Romanian   thank you to  republic of ecuador (asylum of julian assange)Romanian   thank you to  republic of ecuador (asylum of julian assange)
Romanian thank you to republic of ecuador (asylum of julian assange)
 
052412 Lithuanian
052412   Lithuanian052412   Lithuanian
052412 Lithuanian
 
SYRIA CRISIS - (USA) CHEMICAL WEAPONS ATTACK (yiddish)
SYRIA CRISIS - (USA) CHEMICAL WEAPONS ATTACK (yiddish)SYRIA CRISIS - (USA) CHEMICAL WEAPONS ATTACK (yiddish)
SYRIA CRISIS - (USA) CHEMICAL WEAPONS ATTACK (yiddish)
 
052412 Indonesian
052412   Indonesian052412   Indonesian
052412 Indonesian
 
060812 EEOC Response(ARMENIAN)
060812   EEOC Response(ARMENIAN)060812   EEOC Response(ARMENIAN)
060812 EEOC Response(ARMENIAN)
 
061012 Pink Slip (CZECH)
061012   Pink Slip (CZECH)061012   Pink Slip (CZECH)
061012 Pink Slip (CZECH)
 
061012 Pink Slip (KANNADA)
061012   Pink Slip (KANNADA)061012   Pink Slip (KANNADA)
061012 Pink Slip (KANNADA)
 
061012 Pink Slip (SERBIAN)
061012   Pink Slip (SERBIAN)061012   Pink Slip (SERBIAN)
061012 Pink Slip (SERBIAN)
 
061012 Pink Slip (ROMANIAN)
061012   Pink Slip (ROMANIAN)061012   Pink Slip (ROMANIAN)
061012 Pink Slip (ROMANIAN)
 
061012 Pink Slip (IRISH)
061012   Pink Slip (IRISH)061012   Pink Slip (IRISH)
061012 Pink Slip (IRISH)
 
U.S. Navy Seals SLAM Obama
U.S. Navy Seals SLAM ObamaU.S. Navy Seals SLAM Obama
U.S. Navy Seals SLAM Obama
 
052412 Maltese
052412   Maltese052412   Maltese
052412 Maltese
 
050113 fax to judy clarke (boston marathon bombing) - swahili
050113   fax to judy clarke (boston marathon bombing) - swahili050113   fax to judy clarke (boston marathon bombing) - swahili
050113 fax to judy clarke (boston marathon bombing) - swahili
 
140916 가리왕산 웹 홍보물 완성
140916  가리왕산 웹 홍보물 완성140916  가리왕산 웹 홍보물 완성
140916 가리왕산 웹 홍보물 완성
 

Ähnlich wie Gevent для эмуляции нагрузки

"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...it-people
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Nikita Borzykh
 
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыOleg Nenashev
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in productionAnatoly Popov
 
SPb Jenkins Meetup #5. Jenkins in da Cloud. Внутренности
SPb Jenkins Meetup #5. Jenkins in da Cloud. ВнутренностиSPb Jenkins Meetup #5. Jenkins in da Cloud. Внутренности
SPb Jenkins Meetup #5. Jenkins in da Cloud. ВнутренностиOleg Nenashev
 
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Ontico
 
«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр КолесеньIT Share
 
Страх и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжинирингаСтрах и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжинирингаMikhail Chinkov
 
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs..."How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...Provectus
 
DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.Alexander Titov
 
SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101Nadzeya Pus
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...Ontico
 
Building better APIs on rails
Building better APIs on railsBuilding better APIs on rails
Building better APIs on railsRoman Gorel
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годAnton Turetsky
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годBadoo Development
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Ontico
 
Виртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаВиртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаAlexander Kirillov
 
Виртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаВиртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаOpen-IT
 

Ähnlich wie Gevent для эмуляции нагрузки (20)

"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.
 
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in production
 
SPb Jenkins Meetup #5. Jenkins in da Cloud. Внутренности
SPb Jenkins Meetup #5. Jenkins in da Cloud. ВнутренностиSPb Jenkins Meetup #5. Jenkins in da Cloud. Внутренности
SPb Jenkins Meetup #5. Jenkins in da Cloud. Внутренности
 
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
 
«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень
 
Масштабируемый DevOps
Масштабируемый DevOpsМасштабируемый DevOps
Масштабируемый DevOps
 
Страх и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжинирингаСтрах и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжиниринга
 
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs..."How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
 
DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.
 
SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
 
Building better APIs on rails
Building better APIs on railsBuilding better APIs on rails
Building better APIs on rails
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
 
Виртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаВиртуализация как инструмент разработчика
Виртуализация как инструмент разработчика
 
Виртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаВиртуализация как инструмент разработчика
Виртуализация как инструмент разработчика
 

Gevent для эмуляции нагрузки

  • 1. gevent для эмуляции нагрузки АЛЕКСАНДР КОЛЕСЕНЬ
  • 2. ПРОБЛЕМА • server-side на python: REST JSON API • nginx, apache2+mod_wsgi в prefork • MySQL/InnoDB • bottle.py • chef+fabric • nagios+NewRelic • Jenkins CI
  • 4. ЗАДАЧА • тестирование производительности • эмуляция “Интернета” • на AWS/EC2 • как можно более дешевле
  • 5. ЗАДАЧА • раз в сутки стартуем perftest-кластер из Jenkins • разворачиваем окружение, chef • заливаем последний билд, fabric • тестируем производительность • снимаем и публикуем метрики • убиваем кластер чтобы не тратить деньги
  • 6. РЕШЕНИЕ: вариант • ab, siege? • не очень удобно • хотелось бы запускать из Python
  • 7. РЕШЕНИЕ: вариант • нужен tool на Python • у нас есть функциональные тесты • хотелось бы использовать их для perftest • NetworkIO-bound workload • нужен Async-tool • Twisted, Tornado?
  • 8. РЕШЕНИЕ: gevent! • cooperative-сокеты в green-тредах • запускаем N green-тредов с func-tests • без! доработки в callback-стиле • получаем MAX утилизацию сети с MIN CPU,MEM
  • 9. ДЕТАЛИ: gevent • green-треды • cooperative-сокеты • monkey-patching • работает поверх libev (epoll, kqueue)
  • 10. ПРИМЕР: gevent from gevent import monkey; monkey.patch_all() def fetch_url(url): while True: data = urllib2.urlopen(url).read() def main(urls): gs = [gevent.spawn(fetch_url, url) for url in urls] gevent.joinall(gs) if __name__ == ’__main__’: print main(["http://google.com/"]*1024)
  • 11. РЕЗУЛЬТАТ • 5K req/s с одного t1.micro за пару центов в час • тестирование производительности каждый день • автоматизировано через Jenkins, chef, fabric • используем стандартные функциональные тесты
  • 12. СПАСИБО ЗА ВНИМАНИЕ. ВОПРОСЫ gevent http://www.gevent.org http://twit.tv/show/floss-weekly/238 http://www.youtube.com/watch?v=FITsetDUKJ0 Александр Колесень mailto:alexander.kolesen@gmail.com https://twitter.com/imm0use https://plus.google.com/107935551373006842102/