Несомненно только одно: что нет ничего несомненного, поэтому можно сомневаться и в том, что нет ничего несомненного.
Обращаю ваше внимание на то, что эта запись является архивной. Ей уже больше 3 лет. Это означает, во-первых, то, что мое мнение по поднятым в ней вопросам могло измениться (хотя, конечно, не обязательно), а во-вторых, то, что я не испытываю никакого желания эти вопросы обсуждать, и поэтому комментарии и оценки я отключил.
Я не претендую на объективность. Цель этой записи — высказать своё максимально беспристрастное мнение о хостинге 1gb.ru. У меня с ними вышла некрасивая ситуация, которую я хочу описать, и сделать из нее субъективные выводы.
Итак, у нас есть проект «Великие слова». С самого начала (а именно, с февраля), мы хостились у товарищей 1gb — так сложилось, что ранние проекты хостились у них, ну и решили новый проект разместить там же. Еще до того, как мы запустили проект, меня начал настораживать тот факт, что ночью сайт стабильно лежит по несколько минут, иногда и несколько десятков минут. Было мнение, что это связано с тем, что ночью бэкапятся сайты. Да, весьма достойный повод класть сайты. Ну да ладно.
Когда мы запустили проект, на нас обрушился «хабраэффект». Хостеры не преминули отреагировать — сайт был закрыт. Пришлось спешно менять тариф на другой, с достаточным лимитом CPU. Аж 10%, если память меня не подводит. Насколько я знаю, 1gb — один из вымирающих мастодонтов, у которых до сих пор в ходу такие лимиты. Ну да ладно.
Кстати, за 3 месяца, проведенных у этого хостера, у них 3 раза проводился «ремонт оборудования в дата-центре». Это, конечно, очень мило, что хостер заботится о своем оборудовании, но, опять же, сайты лежали по несколько часов, и компенсировать время простоя никто и не подумал. Ну да ладно.
Итак, проект работает, растет, и вроде бы все хорошо. Учитывая специфику навигации и загрузки страниц (абсолютно все страницы у нас загружаются с помощью технологии Ajax), я решил написать внутреннюю систему статистики. И написал. Но с тогдашними 5000 хитов в сутки, она было довольно тяжелой с точки зрения быстродействия. И в один прекрасный день было получено сообщение:
В вашем аккаунте зафиксировано превышение квоты на загрузку сервера баз данных.
База данных, превышающая квоту: gb_greatwords
(смотреть сообщение полностью)
Да, я согласен, 800 тысяч строк — это недопустимо много. Признаю, что в данной ситуации они были правы. Такая ситуация произошла потому, что изначально статистика была невелика, и, честно говоря, я написал ее плохо. Ну что ж, временно перестаем пользоваться статистикой и я ее переписываю. Хостерам отправляем соответствующий ответ.
Новая статистика нормально себе работает, потребляет гораздо меньше места в БД и подавляющее большинство запросов я переписал и оптимизировал. Все нормально, и проблем вроде нет. Но 1gb считает иначе, и в еще один прекрасный день мы получаем сообщение:
База gb_greatwords остановлена.
(смотреть сообщение полностью)
Сайт, естественно, лежит — он не может работать с отключенной БД. По милости 1gb мы пропускаем 600 уникальных посетителей, или 10+ тысяч хитов в сутки. Мы падаем в рейтинге поисковых систем, потому что наблюдать сообщение «Ошибка при работе с базой данных» поисковым роботам не нравится. В общем, что рассказывать о последствиях длительного лежания сайта?
Забегая вперед, скажу, что больше всего меня во всей этой истории поражает свинское поведение 1gb, а именно отключение базы без каких-либо предупреждений. Предыдущее сообщение относилось абсолютно к другому скрипту и абсолютно другому запросу. Я не считаю подобную практику приличествующей серьезной хостинг-компании, не говоря уже о том, что это просто по-человечески нехорошо.
Разумеется, я начинаю переписываться с саппортом, пытаясь решить проблему. Попутно мы принимаем решение взять себе выделенный сервер. Вообще-то, мы уже подумывали над этим, и первым кандидатом на приобретение VDS был как раз 1gb. Нужно ли говорить, что теперь мы их услугами не воспользуемся? Останаливаемся на хостинг-провайдере «ColoCall», и, хотя пока преждевременно говорить о качестве услуг, но за прошедшее время всё на высоком уровне.
Впрочем, о переписке с саппортом. Приводить ее полностью не буду, так как очень много текста. Расскажу вкратце: я отключаю систему статистики (из нее второй запрос в сообщении), и отписываю об этом саппорту. В ответ молчание. Несмотря на то, что договор с новым хостером уже подписан, нужно подождать несколько дней, пока наш сервер запустят в работу, и не хочется, чтобы сайт все это время лежал, потому я забиваю на статистику и следующим письмом предлагаю саппорту удалить таблицу `ii_visits_statistic`, которая и используется в «проблемном» запросе (не могу не признать, что индексы в нем действительно не используюся) — благо, свежий бэкап базы на руках. Что же касается первого запроса — то я, не обращая внимания на наглое вранье саппорта, что, дескать, запрос не использует индексы, отвечаю, что на все поля, по которым осуществялется JOIN, ORDER BY, GROUP BY индексы стоят. Кроме того, подобные запросы используются постоянно (напоминаю, 10+ тысяч хитов в день) и как-то странно, что вдруг этот запрос взял и вызвал дикую, бешеную нагрузку.
В ответ получаю следующее:
Таблицу ii_visits_statistic удалили, но без решения проблемы по первому запросу включить БД не можем. Аргументы вида "сколько лет всей деревней гайки отвинчиваем и хранил господь" (А. П. Чехов, "Злоумышленник" - http://www.ostrovok.de/old/classics/chekhov/story031.htm) мы принять не можем.
Молодцы, хорошо пошутили. Только сайт как лежал, так и лежит. То, что индексы используются, с первого раза не дошло. Чтобы дошло со второго, привожу список самих индексов, показываю, как они используются, и прилагаю скрин выполнения «проблемного» запроса с EXPLAIN, на котором хорошо видно, что индексы используются. В ответ мне молчание аж до следующего дня.
Так как 1gb, несмотря на явную свою неправоту, БД включать не собираются, мы временно заливаем базу на другой хостинг и подключаем ее с помощью удаленного доступа. После двух дней дауна сайт наконец-то возобновляет работу.
Только на следующий день мне приходит ответ, в котором говориться, что EXPLAIN в качестве аргумента саппорт принять не может, и соображения по поводу того, что MySQL плохо обрабатывает запросы со множеством джойнов. А то я не знал. Конечно, медленно, но, мне показалось, или сначала они что-то говорили по поводу того, что якобы не используются индексы? По просьбе читателей 1gb, привожу текст этого письма.
Есть несколько соображений:
1. EXPLAIN не показывает фактическое положение дел, это только предположение о том, что будет происходить. Не всегда верное.
2. mySQL крайне плохо обрабатывает JOIN по множеству таблиц с дополнительными параметрами, в большинстве случает строится просто временная таблица с перемноженными таблицами участвующими в запросе.
смотреть письмо полностью
И раз уж я его привел, пройдусь по нему подробнее. Во-первых, если не верить EXPLAIN, то я уже не знаю чему верить. Наверно, исключительно саппорту? По второму пункту согласен, но это я и раньше знал. По третьему и четвертому тоже согласен. По пятому, у меня доступа к логами нет, так что ничего сказать не могу, но похоже на правду. То есть, в этом письме саппорт практически прав. Но мне это уже не важно. Между прочим, несмотря на новый хостинг, который легко держит сайт, я решил все же немного переписать движок, а именно, избавиться от подобных запросов. Но это тоже не важно. Важно то, что 1gb не дали мне возможности переписать движок; 1gb не предложили мне перейти на VDS; 1gb молча, без предупреждений отрубили базу — то есть положили нам сайт, лечили меня отговорками, что нет индексов, и только через 2 дня удосужились нормально описать проблему, а сайт все это время лежал.
В итоге сайт и база переносится на новый хостинг, где ужасная проблемная статистика отрабатывает за пару секунд (на 1gb она отрабатывала минимум 10 секунд), а цитаты в плейлисте меняются с такой скоростью, что кажется, как будто они не подгружаются, а уже загружены. Ну конечно, VDS же. Так вот, еще раз по поводу свинского поведения: ну что стоило 1gb не рубить нам базу без предупреждений, а предложить перейти на VDS в течении нескольких дней, а?
Итак, субъективные выводы:
Владислав Семенов, 14-го мая 2009 года в 15:29
"ложить сайты" - "класть сайты"
"входу такие лимиты" - "в ходу такие лимиты"
Удивительно, что вы более-менее серьезный проект держали на виртуальном хостинге.
Вы вообще представляете что за люди сидят в саппорте? Не только в 1gb, а вообще. А вы им про explain'ы лечите.
sap, 14-го мая 2009 года в 16:36
Спасибо за поправки, исправил.
Ну вот так сложилось, что держали, все же не дикая нагрузка. Как раз уже подумывали о переходе, это событие стало катализатором, но не в пользу 1gb.
Что за люди сидят в саппорте?
dmach, 15-го мая 2009 года в 16:20
Что же вы текст последнего ответа от 1Gb.ru не привели?
sap, 16-го мая 2009 года в 13:45
Во-первых, потому что он довольно велик; во-вторых, потому что, на мой взгляд, он особо ничего не меняет, к тому же, его содержание я вкратце рассказал.
Но я дополнил запись этим вашим последним ответом, и, раз уж дополнил, то немного дополнил и текст — а именно, написал, в чем, на мой взгляд, вы очень сильно не правы. И это не техническая сторона вопроса.
Евгений Гетманенко, 16-го мая 2009 года в 18:18
Комментарий скрыт.
sap, 17-го мая 2009 года в 01:19
Комментарий скрыт.
dmach, 17-го мая 2009 года в 22:37
Про лимиты "У нормальных хостеров их вообще нет" - да, хорошо. Замечательно =) Общий взгляд на лимиты - http://mastertalk.ru/topic26340s0.html
Про "не технические вопросы" - я пас, извините.
sap, 18-го мая 2009 года в 00:41
Почитал. Вот смотрите, вы считаете своей «фишкой» жесткий контроль за ресурсами, причем, очевидно, полезной. Но реально на эту вашу «фишку» одни жалобы и десятки недовольных. А покажите мне хоть одного довольного? Только не просто довольного вашим хостингом, а довольного именно этим фактором?
И все-таки, может, вы скажете, почему вы отключили базу без предупреждений, даже не предложив нам перейти, например, на VDS? Вы же просто потеряли клиента, а могли бы приобрести.
dmach, 18-го мая 2009 года в 01:14
Десятки недовльных - не страшно. Довольные не полезут в интернет писать хвалебные посты в своих блогах, им лень =)
Отключал не я, отключал технический директор. Очевидно, у него были на это причины и (судя по тексту сообщения) держать базу включённой было нельзя. Иначе бы предварительно предупредили.
На VDS иметь проблемного клиента тоже не хочется, тем более с возможной дисковой нагрузкой - она крайне плохо виртуализуется. Лучше уж честно "прогнать", чем мучиться самим и мучить вас.
sap, 18-го мая 2009 года в 13:49
Ну, проблемные клиенты бывают и похуже, интересно, что бы вы на такое сказали? :)
Я понимаю, что вы не скажете, но интересно, сколько же баз крутится у вас на одном сервере, что даже относительно несложные запросы создают нагрузку? Я одно время хостился за 99 рублей :), и никаких проблем не было, но как только перенес сайт к вам (речь идет именно вот об этом сайте), начали лезть сообщения про нагрузку БД. Чем это объяснить? Либо у вас плохое оборудование (что вряд ли), либо вы перегружаете свои сервера (что вероятнее).
Похоже, люди по вашей ссылке выше были правы — вы действительно предпочитаете удовлетворить потребности сотен мелких клиентов, чем десятков крупных :)
Ваша позиция ясна. Спасибо, что рассказали.
Сергей., 2-го сентября 2009 года в 03:20
Страшно. И даже очень. Потому что их прочитают сотни. И расскажут тысячам. Или у вас миллионы клиентов? И тысчонка другая просто пофигу?
Михаил, 11-го сентября 2009 года в 17:05
мастерхост тоже несколько раз клал наши сайты. Для пхп у них может быть хостинг оптимизирован, но у нас цмска на перле. Судя по логам там были виноваты поисковики, когда они одновременно ломились на сайт.