Хостинг не выдерживает нагрузки.Оптимизация базы данных

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#16 14 ноября 2011 в 22:11
Прищлось отключить юзертип (хостер сказал много жрёт)

И вот ещё написали:
а это что за запросы ?
SELECT id FROM cms_stats WHERE (ip = '' AND page = '/video/movie1416.html')

статистика ?
отключите статистику
----------------
Даже не знаю что это и как отключить, подскажите кто знает.





статистика ?
отключите статистику

fact:
aiwebhost.com
это лизвеб, может и подойдет топикстартеру

Амстердам

готов перейти на лучшее, не знаю куда… Подскажите плиз куда лучше бечь?
#17 14 ноября 2011 в 22:19

отключите статистику

fact
надеюсь вы используете внешнюю, внутреннюю точно надо отключать

Подскажите плиз куда лучше бечь

fact
посмотрите в сторону fastvps или другие решения, на ваш кошелек и запросы, так вам никто не посоветует, нужна конкретика, пишите в личку лучше, что за проект?
#18 14 ноября 2011 в 22:22

надеюсь вы используете внешнюю, внутреннюю точно надо отключать

Амстердам
В админке в настройках сайта?
Сегодня в 06:07
#19 14 ноября 2011 в 22:25
да
#20 14 ноября 2011 в 22:28
Вдумчиво проектируйте свой проект. Тавтология получается. Если вы хотите результата, нужно планировать все заранее. Могу процитировать статью с конференции разработчиков высоконагруженных систем HighLoad++ о проекте Вконтакте, статья прошлого года. Это конечно монстры, но все же, кто еще на шареде, узнавайте о таких вещах, развивайтесь.

Платформа

Debian Linux — основная операционная система
nginx — балансировка нагрузки
PHP + XCache
Apache + mod_php
memcached
MySQL
Собственная СУБД на C, созданная «лучшими умами» России
node.js — прослойка для реализации XMPP, живет за HAProxy
Изображения отдаются просто с файловой системы xfs
ffmpeg — конвертирование видео


Статистика

95 миллионов учетных записей
40 миллионов активных пользователей во всем мире (сопоставимо с аудиторией интернета в России)
11 миллиардов запросов в день
200 миллионов личных сообщений в день
Видеопоток достигает 160Гбит/с
Более 10 тысяч серверов, из которых только 32 — фронтенды на nginx (количество серверов с Apache неизвестно)
30-40 разработчиков, 2 дизайнера, 5 системных администраторов, много людей в датацентрах
Каждый день выходит из строя около 10 жестких дисков

Архитектура

Общие принципы

Cервера многофункциональны и используются одновременно в нескольких ролях:
Перебрасывание полуавтоматическое
Требуется перезапускать daemon'ы
Генерация страниц с новостями (микроблоги) происходит очень похожим образом с Facebook (см. Архитектура Facebook), основное отличие — использование собственной СУБД вместо MySQL
При балансировке нагрузки используются:
Взвешенный round robin внутри системы
Разные сервера для разных типов запросов
Балансировка на уровне ДНС на 32 IP-адреса
Большая часть внутреннего софта написано самостоятельно, в том числе:
Собственная СУБД (см. ниже)
Мониторинг с уведомлением по СМС (Павел сам помогал верстать интерфейс😊)
Автоматическая система тестирования кода
Анализаторы статистики и логов
Мощные сервера:
8-ядерные процессоры Intel (по два на сервер, видимо)
64Гб оперативной памяти
8 жестких дисков (соответственно скорее всего корпуса 2-3U)
RAID не используется
Не брендированные, собирает компания ТехноОкта
Вычислительные мощности серверов используются менее, чем на 20%
Сейчас проект расположен в 4 датацентрах в Санкт-Петербурге и Москве, причем:
Вся основная база данных располагается в одном датацентре в Санкт-Петербурге
В Московских датацентрах только аудио и видео
В планах сделать репликацию базы данных в другой датацентр в ленинградской области
CDN на данный момент не используется, но в планах есть
Резервное копирование данных происходит ежедневно и инкрементально

Волшебная база данных на C

Этому продукту, пожалуй, уделялось максимум внимания аудитории, но при этом почти никаких подробностей о том, что он собственно говоря собой представляет, так и не было обнародовано. Известно, что:

Разработана «лучшими умами» России, победителями олимпиад и конкурсов топкодер; озвучили даже имена этих «героев» Вконтакте (писал на слух и возможно не всех успел, так что извиняйте):
Андрей Лопатин
Николай Дуров
Арсений Смирнов
Алексей Левин
Используется в огромном количестве сервисов:
Личные сообщения
Сообщения на стенах
Статусы
Поиск
Приватность
Списки друзей
Нереляционная модель данных
Большинство операций осуществляется в оперативной памяти
Интерфейс доступа представляет собой расширенный протокол memcached, специальным образом составленные ключи возвращают результаты сложных запросов (чаще всего специфичных для конкретного сервиса)
Хотели бы сделать из данной системы универсальную СУБД и опубликовать под GPL, но пока не получается из-за высокой степени интеграции с остальными сервисами
Кластеризация осуществляется легко
Есть репликация
Если честно, я так и не понял зачем им MySQL с такой штукой — возможно просто как legacy живет со старых времен

Аудио и видео

Эти подпроекты являются побочными для социальной сети, на них особо не фокусируются. В основном это связанно с тем, что они редко коррелируют с основной целью использования социальной сети — общением, а также создают большое количество проблем: видеотраффик — основная статья расходов проекта, плюс всем известные проблемы с нелегальным контентом и претензиями правообладателей. Медиа-файлы банятся по хэшу при удалении по просьбе правообладателей, но это неэффективно и планируется усовершенствовать этот механизм.

1000—1500 серверов используется для перекодирования видео, на них же оно и хранится.
XMPP

Как известно, некоторое время назад появилась возможность общаться на Вконтакте через протокол Jabber (он же XMPP). Протокол совершенно открытый и существует масса opensource реализаций.

По ряду причин, среди которых проблемы с интеграцией с остальными сервисами, было решено за месяц создать собственный сервер, представляющий собой прослойку между внутренними сервисами Вконтакте и реализацией XMPP протокола. Основные особенности этого сервиса:

Реализован на node.js (выбор обусловлен тем, что JavaScript знают практически все разработчики проекта, а также хороший набор инструментов для реализации задачи)
Работа с большими контакт-листами — у многих пользователей количество друзей на вконтакте измеряется сотнями и тысячами
Высокая активность смены статусов — люди появляются и исчезают из онлайна чаще, чем в других аналогичных ситуациях
Аватарки передаются в base64
Тесная интеграция с внутренней системой обмена личными сообщениями Вконтакте
60-80 тысяч человек онлайн, в пике — 150 тысяч
HAProxy обрабатывает входящие соединения и используется для балансировки нагрузки и развертывания новых версий
Данные хранятся в MySQL (думали о MongoDB, но передумали)
Сервис работает на 5 серверах разной конфигурации, на каждом из них работает код на node.js (по 4 процесса на сервер), а на трех самых мощных — еще и MySQL
В node.js большие проблемы с использованием OpenSSL, а также течет память
Группы друзей в XMPP не связаны с группами друзей на сайте — сделано по просьбе пользователей, которые не хотели чтобы их друзья из-за плеча видели в какой группе они находятся

Интеграция со внешними ресурсами

Во Вконтакте считают данное направление очень перспективным и осуществляют массу связанной с этим работы. Основные предпринятые шаги:

Максимальная кроссбраузерность для виджетов на основе библиотек easyXDM и fastXDM
Кросс-постинг статусов в Twitter, реализованный с помощью очередей запросов
Кнопка «поделиться с друзьями», поддерживающая openGraph теги и автоматически подбирающая подходящую иллюстрацию (путем сравнивание содержимых тега <title> и атрибутов alt у изображений, чуть ли не побуквенно)
Возможность загрузки видео через сторонние видео-хостинги (YouTube, RuTube, Vimeo, и.т.д.), открыты к интеграции с другими

Интересные факты не по теме

Процесс разработки близок к Agile, с недельными итерациями
Ядро операционной системы модифицированно (на предмет работы с памятью), есть своя пакетная база для Debian
Фотографии загружаются на два жестких диска одного сервера одновременно, после чего создается резервная копия на другом сервере
Есть много доработок над memcached, в.т.ч. для более стабильного и длительного размещения объектов в памяти; есть даже persistent версия
Фотографии не удаляются для минимизации фрагментации
Решения о развитии проекта принимают Павел Дуров и Андрей Рогозов, ответственность за сервисы — на них и на реализовавшем его разработчике
Павел Дуров откладывал деньги на хостинг с 1 курса
#21 14 ноября 2011 в 23:45

индексы на БД

Fuze
для стандартного релиза 1.9 с этим все оке? Нашел старые темы по индексам, надеюсь что самые сложные выборки не принесут хлопот
#22 15 ноября 2011 в 01:58
Отключения модуля — всплываящая подсказка о пользователе и отключение сбора статистики в админке в 2 раза снизили нагрузку на сервер…
#23 15 ноября 2011 в 11:17

отключение сбора статистики

fact
конечно это обременяло сайт, но от количества пользователей онлайн вас это не спасет, потихоньку собирайте чемодан на VPS
#24 17 ноября 2011 в 00:45
ну как ваши дела? убирайте не нужные запросы, если не используете некоторые позиции, уберите их из макета, некоторые модули и даже компоненты
#25 17 ноября 2011 в 01:12
Всплывающая подсказка о пользователе при 400 онлайн в принципе действительно должна была сильно грузить сайт как и статистика. + поставил везде кеширование от 10 мин до 24 часов в сутки
Пока было максимум 240 онлайн за последнее время — просело до 10 000 хостов в сутки. После отключки описанного выше хостер написал что стало сразу раза в два лучше и нагрузка стала нормальной.
Если опять наплыв будет только тогда можно узнать реакцию сервера. будем ждать и присматриваться в VPS
#26 17 ноября 2011 в 19:15
еще совет. Не юзайте модуль "случайное фото". При большом количестве фоток выборка из базы ORDER BY RAND будет тормозить жутко…
#27 17 ноября 2011 в 19:48
А какая тематика сайта? Извиняюсь за оффтоп, но любопытство замучило zst
#28 17 ноября 2011 в 22:18
развлекательная smile
#29 18 ноября 2011 в 00:30
Вот всегда так — навключаете всякой чепухи типа подсказок и прочей развлекухи, а потом хостинг падает.
Конечно тут телепатов нет и корректно никто не скажет, что для сайта было бы лучше… Или может покажете?
#30 18 ноября 2011 в 01:00

навключаете всякой чепухи типа подсказок и прочей развлекухи, а потом хостинг падает

Евгений Фоменко
большинство чепухи на данный момент уже отключил, нагрузка глобально снизилась. Всем спасибо
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.