[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Что ещё надо знать о сайтах
Страницы: 1, 2, 3, 4
Миша
Как молодому проекту выдержать DDoS-атаку или допустим посещаемость сайта небольшая, всё работает отлично и в этот момент размещают ссылку на этот сайт на популярном ресурсе, одновременно приходит много народу и сайт ложится.

Поэтому предлагаю обсудить эту тему, как недопустить подобной ситуации, в основном ждём советов от программистов и админов работающих и имеющих опыт с высоконагруженными проектами.

Вот что я накопал, тема пригодится тем, кто первый раз с этим сталкивается.

1 На что обратить внимание в первую очередь, узкие места:
- скорость соединения с интернетом
- сервер
- DB (база данных)
- код

2 Cкорость сетевого соединения
- провайдер
- сетевая карта 1 Гбит/с реально выдаёт 800-900 Мбит/с
- существуют сетевые карты до 10 Гбит/с
- увеличение пропускной способности (Bonding | Teaming), объединить несколько физизических сетевых карт в один интерфейс
- MSI-X - многопоточные сетевые карты, имеют несколько очередей. Позволяют перенести обработку на несколько CPU, считают контрольные суммы вместо CPU.
- Ссылки по теме:
https://habrahabr.ru/company/it-grad/blog/267629/
https://habrahabr.ru/company/hpe/blog/118324/

3 Различия VDS и VPS
- VPS - Virtual Private Server. VPS для каждого выделенного сервера запускает свою копию ОС, например через OpenVZ.
- VDS - Virtual Dedicated Server. VDS управляется собственной ОС, у каждого виртуального сервера своя ОС.
- VDS может работать с несколькими ядрами ОС, VPS – только с одним.

4 Оптимизация нагрузки
- уменьшить количество запросов к серверу
- кеширование, анти-кеш
- использовать сжатие (всю статику заранее сжать)
- научиться работать со спрайтами
- разные сервера под статику и динамику
- балансировка серверов со статикой и динамикой (без обновления)

5 Сервер
- Apache по умолчанию может одновременно работать максимум с 256 запросами, их можно увеличить до 512, или больше если компилировать Apache, но подводным камнем является большое потребление оперативной памяти.
- Nginx имеет преимущество, может работать с 10. 000 запросами одновременно , быстро отдаёт статический контент, если требуется отдавать динамический контент он передаёт эти запросы например Apache.
- Правилом хорошего тона будет масштабирование нагрузки (распределение нагрузки на сайт) путём размещения статического контента на одном сервере, динамического (например обрабатываемого PHP) на другом.
- Однако даже после масштабирования нагрузки может наступить момент, когда сервера будут работать на полную мощность и сайт начнёт "тормозить" отдавать контент с большой задержкой. Значит нужно использовать балансировку, когда отправляем пользователей на разные сервера, но с одинаковым на них контентом, это можно сделать программно или на уровне железа. Самое простое забить список IP серверов в DNS.
- Ссылки по теме:
https://system-admins.ru/osobennosti-veb-se...ov-apache-nginx
https://habrahabr.ru/post/267721/
https://habrahabr.ru/post/109191/

6 СУБД MySQL
- MyISAM vs InnoDB. MyISAM лучше работает с запросами SELECT, при изменении или добавлении в таблице строки вся таблица блокируется на это время. Данные в InnoDB кэшируются, при изменении или добавлении в таблице строки блокируется только эта строка, поддержа транзакций (в случае ошибки в одном запросе, блок операторов возвращается к предыдущему состоянию). Поддержка полнотекстового поиска в MyISAM и InnoDB с версии MySQL 5.6.4.

Может я в чём то ошибаюсь, поэтому ждём советов от мастеров этого дела.

_____________
Принимаю заказы, писать в ЛС
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.