Падение Stack Overflow: что случилось

    В ночь с четверга на пятницу ресурс Stack Overflow был недоступен. Через какое-то время работа была восстановлена, однако, в пятницу утром сайт снова «упал».

    В SO отмечают, что отказ вызвала серия неполадок, проявившихся одновременно. Система не справилась с растущим числом подключений. Сейчас сайт работает в штатном режиме.

    Под катом расскажем о причинах, вызывавших сбой.


    / фото Hamza Butt CC

    Stack Overflow работает на 9 веб-серверах, каждый из которых обрабатывает от 200 до 500 запросов в секунду. Как отмечает Architecture Lead платформы Stack Overflow Ник Кравер (Nick Craver), в пятницу проблема затронула два сервера: ny-web01 и ny-web04, которые начали «бомбардировать» базу данных Stack Overflow огромным количеством запросов. Это привело к истощению пула потоков IIS и увеличению времени ожидания обработки запросов от БД.

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

    Проблема с балансировщиком нагрузки


    В идеале HAProxy должен был отключить два «проблемных» сервера автоматически и до того, как потребовалось вмешательство администратора. Но ASP.NET в Stack Overflow выполнял редирект с домашней страницы на /error, а HAProxy получал обратно код ответа 302, который интерпретировал как «успех». Поэтому попыток отключить серверы не предпринимал.

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

    Ник отмечает, что команда до сих пор не смогла точно установить причину, которая привела к росту числа SQL-запросов (в треде на SO он опубликовал график — на нем видны большие всплески активности). SO работают над этим и планируют держать резидентов платформы в курсе.

    Прошлые отключения


    Отметим, что «падения» Stack Overflow случались и в прошлом — было отключение в 2014 году. Однако тогда проблему вызвала массированная DDoS-атака на провайдера сетевых услуг, с которым сотрудничает платформа. В тот раз проблему удалось решить за час.

    Disclaimer: по мере появления новой информации относительно «падения» SO — аналитики, решений по части ИТ-инфраструктуры или ИБ — мы будем дополнять этот материал.



    P.S. О чем мы пишем в Первом блоге о корпоративном IaaS:

    ИТ-ГРАД 363,95
    vmware iaas provider
    Поделиться публикацией
    Комментарии 24
    • 0

      Действительно попадали не все сервера: в то время как на en so не зайти — so на русском продолжал работать без сбоев.

      • –4
        Я и не думал что у них сервера на винде.
        • +14

          Основатели обладают хорошей экспертизой в продуктах Microsoft:
          Джефф Этвуд эксперт по Asp.Net
          Джоэл Спольски участвовал в разработке excel.


          Так что, думаю, выбор платформы для них был очевиден)

          • +1
            Joel Spolsky ненавидит Майкрософт, хоть и признает, что туда заманивают очень умных ребят. Можно почитать в его блоге или книгах
          • +11

            Более того они еще пилят отличный открытый Redis клиент для .Net

            • –1
              Меня это тоже удивляет, но факт. Особенно после того как я почитал блог Джоэла Спольски где он критикует Microsoft, и разработчиков под продукты этой компании.
            • –3
              А что не так с серверами на винде?
              • 0
                А что плохого в сервере на винде? Я вот, с огромным удовольствием пользовался IIS на небольшом сервере, где у меня было посажено много субдоменов. Очень простая настройка, никаких проблем. Если есть лицензия, то конфигурация и обслуживание доставят куда меньше хлопот, чем конфигурация Apache или Nginx, если вы не являетесь умудрённым опытом админом.
                • 0
                  А что плохого в сервере на винде?
                  Стоимость. От этого тянутся другие минусы: много серверных решений (Redis и пр.) заточены под UNIX сервера.
              • +50
                Падение Stack Overflow: что случилось

                Стек переполнился?
                • +13
                  сколько кода было не скопипащено…
                  • 0
                    Может с гитхаба можно статистику взять?
                    • +1

                      Не вполне репрезентативно.
                      Вот если они Ctrl+C отслеживают))

                      • –1
                        Тссс…
                        А то еще Гитхаб упадет.
                    • 0
                      У Full Stack Overflow Copypaster'ов по всему миру случился вынужденный простой.
                      • +10

                        Кто говорит, что не копипастит со стека, делает это в два раза больше.

                        • 0
                          Латентные копипастеры
                          • 0
                            Да ладно, ну надо в выдаче гугла не в первую ссылку ткнуть, а просмотреть ещё 2-3. Ужас, но не ужас-ужас.
                          • +1

                            Я не копипащу.


                            Заголовок спойлера

                            Я перепечатываю ;)

                      • 0
                        Ограничение трафика в теории решило бы проблему, однако этого не произошло из-за ошибки в работе балансировщика нагрузки. ASP.NET в Stack Overflow выполнял редирект с домашней страницы на /error, а HAProxy получал обратно код ответа 302, который интерпретировал как «успех».
                        То есть сервер приложений выдаёт сообщение о нештатной ситуации в виде обычной страницы (пусть и через перенаправление), а «ошибка в работе», значит, у балансировщика нагрузки? Такая логика — прямой путь к немного предсказуемому концу.
                        • +10

                          Вспомнилась шуточка: если SO упадет, то откуда разработчики узнают, как его поднять?

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое