29
Обеспечение качества высоконагруженных систем: критические неисправности Иосиф Иткин, Exactpro Systems 3 декабря 2013

IATE Lecture 3: Quality Assurance for Highload Systems

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: IATE Lecture 3: Quality Assurance for Highload Systems

Обеспечение качества высоконагруженных систем:критические неисправности

Иосиф Иткин, Exactpro Systems3 декабря 2013

Page 2: IATE Lecture 3: Quality Assurance for Highload Systems

Введение

Иосиф Иткин, Exactpro Systems с 2009 годаОфис в Обнинске - ул. Красных Зорь - 19 человек / 210 всего Создание и применение инструментов для проверки высоконагруженных трейдинговых системhttp://www.slideshare.net/IosifItkinhttp://exactpro.com http://tmpaconf.orghttp://its-trading.ruhttps://vk.com/clubqahttp://linkedin.com/in/iosifitkin

Page 3: IATE Lecture 3: Quality Assurance for Highload Systems

Содержание лекции

1. Принцип Рида Хоффмана2. Арифметические ошибки и толстые пальцы3. Тахионы и ракеты4. Ситуация гонок и Deadlocks5. Операционные проблемы6. Разное

Page 4: IATE Lecture 3: Quality Assurance for Highload Systems

Принцип Рида Хоффмана

Кто такой Рид Хоффман?

Page 5: IATE Lecture 3: Quality Assurance for Highload Systems

Принцип Рида Хоффмана

Что такое LinkedIn?

Page 6: IATE Lecture 3: Quality Assurance for Highload Systems

Принцип Рида Хоффмана

http://reidhoffman.org/linkedin-pitch-to-greylock/

Page 7: IATE Lecture 3: Quality Assurance for Highload Systems

Принципы тестирования

Тестирование показывает наличие дефектовИсчерпывающее тестирование невозможноРаннее тестированиеКластеризация дефектовПарадокс пестицидаТестирование зависит от контекстаОбманчивость отсутствия ошибок

Page 8: IATE Lecture 3: Quality Assurance for Highload Systems

Принципы тестирования

Три вида воздействия

Page 9: IATE Lecture 3: Quality Assurance for Highload Systems

USS Yorktown

21 сентября 1997 годаCG-47 Aegis пилотная версия «Умного корабля»Отказ всех систем, включая двигатели, на 2,5 часаНеправильные данные введены в Remote Data Base ManagerПривели к переполнению базы данных и отключению LAN, включая все терминалы

Page 10: IATE Lecture 3: Quality Assurance for Highload Systems

USS Yorktown

21 сентября 1997 годаCG-47 Aegis пилотная версия «Умного Корабля»Отказ всех систем, включая двигатели, на 2,5 часаНеправильные данные введены в Remote Data Base ManagerПривели к переполнению базы данных и отключению LAN, включая все терминалыОшибка – деление на ноль

Page 11: IATE Lecture 3: Quality Assurance for Highload Systems

Mizuho Securities

12 октября 2005 годаПопытка продать 1 акцию J-Com за 610,000 йен ($5,041)Ошибочно перепутаны объем и ценаНе сработали риск-системы:a)Mizuno Securitiesb)Токийской биржиПотери оцениваются в $225 млн.

Ошибка такого вида называется Fat Finger

Page 12: IATE Lecture 3: Quality Assurance for Highload Systems

Ariane 5 Type Conversion

4 июня 1996 годаПервый полет ракеты Ariane 5Отклонение курса и разрушение через 40 секунд после стартаАвтоматический подрыв на высоте 3700 мПреобразование 64-битного числа в 16 битОшибка invalid operand на языке AdaПО совпадала с предыдущей версией Ariane 4Но горизонтальная скорость существенно вышеТестирование проводилось на симуляторе без использования самой SRIОшибку воспроизвели на тестах

Page 13: IATE Lecture 3: Quality Assurance for Highload Systems

Patriot Software

25 февраля 1991 года, Дахран, Саудовская АравияБатарея Патриот не стала сбивать ракету ScudПопадание в казарму привело к гибели 28 человекОколо 97 человек получили раненияРасследование обнаружило ошибку в ПО

Page 14: IATE Lecture 3: Quality Assurance for Highload Systems

Patriot Software

Для хранения времени использовалось 24 битаЗначение 0.1 секунд в бинарном виде:

0.0001100110011001100110011001100.... (1/24+1/25+1/28+1/29+1/212+1/213+...)

Ошибка округления0.0001100110011001100110011001100....или 0.000000095

Предполагалось, что комплекс будет работать короткое время. Систему не перегружали 100 часов0.000000095×100×60×60×10=0.34 секундыСкорость Scud 1,673 метра в секунду -> ошибка 568 метров

Page 15: IATE Lecture 3: Quality Assurance for Highload Systems

Patriot Software

Page 16: IATE Lecture 3: Quality Assurance for Highload Systems

Patriot Software

Page 17: IATE Lecture 3: Quality Assurance for Highload Systems

Patriot Software

Page 18: IATE Lecture 3: Quality Assurance for Highload Systems

Patriot Software

25 февраля 1991 года, Дахран, Саудовская АравияСообщение об ошибке 11 февраляОтвет – «это не баг, а фича»Workaround рестартовать каждые 8 часовРестарт 60 – 90 секундИсправление готово 16 февраляДоставка обновлений в Дахран

26 февраля

Page 19: IATE Lecture 3: Quality Assurance for Highload Systems

Измерение времен отклика

Page 20: IATE Lecture 3: Quality Assurance for Highload Systems

North American Blackout

14 августа 2003 года, США и КанадаКаскадное отключение электричестваСитуация гонок привела к переполнению буфера и отключению системы уведомленийСброс 4% нагрузки мог бы предотвратить потери порядка $10b

Page 21: IATE Lecture 3: Quality Assurance for Highload Systems

Ситуация Гонок

http://en.wikipedia.org/wiki/Race_condition

Page 22: IATE Lecture 3: Quality Assurance for Highload Systems

Therac-25

Therac-25 — аппарат лучевой терапии, запущенный в 1982 гЭтот аппарат был причиной как минимум шести передозировокДве - со смертельнымисходом

Page 23: IATE Lecture 3: Quality Assurance for Highload Systems

Therac-25

Одна и та же переменная применялась как для анализа введённых чисел, так и для определения положения поворотного круга, поэтому при быстром вводе Therac мог иметь дело с неправильным положением поворотного круга (так называемое состояние гонки).

Настройка положения отклоняющих магнитов занимает около 8 секунд. Если за это время параметры типа и мощности излучения были изменены, а курсор установлен на финальную позицию, то система не обнаруживала изменений.

Page 24: IATE Lecture 3: Quality Assurance for Highload Systems

Therac-25

Деление на величину излучения, приводящее в некоторых случаях к ошибке деления на ноль и к соответствующему увеличению величины облучения до максимально возможной.Установка булевской переменной (однобайтовой) в значение «истина» производилось командой «x=x+1». Поэтому с вероятностью 1/256 при нажатии кнопки «Set» программа могла не пропустить информацию о некорректном положении диска.Кроме этих явных ошибок было замечено множество потенциальных — например, в многозадачной операционной системе не было никакой синхронизации

Page 25: IATE Lecture 3: Quality Assurance for Highload Systems

Deadlock

Page 26: IATE Lecture 3: Quality Assurance for Highload Systems

Ситуация

Page 27: IATE Lecture 3: Quality Assurance for Highload Systems

Knight Capital

1 августа 2012 года, СШАKnight Capital – одна из наиболее успешных HFT-компанийИзменения в связи с Retail Liquidity Program в NYSEСистем SMARS – высокоскоростной рутер заявокКоличество родительских заявок – 212Количество дочерних заявок – миллионыПотери – $460 млн. или $170 тыс/секОтсутствие механизмов контроля и мониторинга рисков в SMARSВ основе изменений - старая функциональность – PowerPegРазвертывание изменений на 7 серверов

Page 28: IATE Lecture 3: Quality Assurance for Highload Systems

Knight Capital

1 августа 2012 года, СШАKnight Capital – одна из наиболее успешных HFT компанийИзменения в связи с Retail Liquidity Program в NYSEСистем SMARS – высокоскоростной рутер заявокВ основе изменений - старая функциональность – PowerPegКоличество родительских заявок – 212Количество дочерних заявок – миллионыПотери – $460 млн. или $170 тыс. в секундуОтсутствие механизмов контроля и мониторинга рисков в самой системе SMARSРазвертывание изменений на 7 серверовВсего серверов было 8…

Page 29: IATE Lecture 3: Quality Assurance for Highload Systems

Спасибо!

Источники информации:https://www.google.ru/?q=worst+software+bugs#newwindow=1&q=worst+software+bugs

Например:http://listverse.com/2012/12/24/10-seriously-epic-computer-software-bugs/http://www.net-security.org/secworld.php?id=10354http://www.wired.com/software/coolapps/news/2005/11/69355http://www.pcworld.com/article/205318/11_infamous_software_bugs.htmlhttp://www.intertech.com/Blog/15-worst-computer-software-blunders/

Ошибки, не относящиеся к ПО:Black Monday 1987, Flash Crash 2010, No 4 in SQS 2010 List