Рубрики
Uncategorized

Оптимизация серверной системы

Автор оригинала: David Wong.

1. Приобретение физических машин для баз данных

Процессор: 64-разрядный процессор, 2-16 процессоров на машину. По крайней мере 2-4, чем больше L2 (кэш), тем больше, тем лучше

Память: 96-128G, MySQL 3-4 экземпляра. 32-64G, 1-2 примера

Жесткий диск: Оборудование: Выбирается КАК, чем больше, тем лучше, тем выше скорость, чем лучше 15К

Производительность: SSD (Высокий параллелизм) > SAS (Общая бизнес-линия) > SATA (Автономный режим)

Выберите SSD: Использование SSD-накопителей или твердотельных накопителей PCIe может повысить эффективность операций ввода-вывода в тысячи раз.

Случайный ввод-вывод: SAS С одним диском 300 операций ввода-вывода SSD Случайный ввод-вывод: С одним диском до 35 000 операций ввода-вывода Карта HBA флэш-памяти

Массив дисков RAID: 4 быстрых диска: RAID 0 > RAID 1 (рекомендуется) > RAID 5 (используется реже) > RAID 1

Главная библиотека выбирает raid10, подчиненная библиотека выбирает raid5/raid0/raid10, а конфигурация подчиненной библиотеки равна или больше, чем у главной библиотеки.

Сетевая карта: Использование нескольких соединений сетевых карт, а также буфера, Оптимизация TCP

Гигабитная сетевая карта и Гигабитные и Гигабитные коммутаторы

Чаевые:

База данных относится к интенсивной службе ввода-вывода, аппаратное обеспечение не должно использовать виртуализацию, насколько это возможно.

Ведомое оборудование должно быть равно или превышать производительность ведущего устройства

2. Корпоративный кейс:

Baidu: Сервер IBM в отделе имеет 48-ядерный процессор, 96 ГБ памяти, и на одном сервере работает от 3 до 4 экземпляров:

Isa: Сервер DELL R510, процессор E5210, память 48 ГБ, жесткий диск 12*300 Г SAS, RAID 10.

3. Настройка Конфигурации Серверного Оборудования

(1) Настройка BIOS сервера:

Справочные настройки для повышения эффективности процессора:

A. Откройте оптимизированный режим производительности на ватт (DAPC) для максимальной производительности процессора. Базы данных обычно требуют высокой вычислительной сложности

B. Откройте такие параметры, как CIE и состояния, для повышения эффективности ЦП

C. Частота памяти (Частота памяти) Выбирает Максимальную Производительность (Лучшая производительность)

D. Запустите чередование узлов из меню Настроек памяти, чтобы избежать проблем с NUMA

(2) Настройка карты массива:

A. Приобретение карт массива с КЭШ-памятью и модулями BBU (Механические диски)

B. Настройка стратегии записи массива на WEB или даже ПРИНУДИТЕЛЬНОЕ использование WB (что требует высокой безопасности данных). (вб ссылается на стратегию написания raid-карты: ответная запись)

C. Строго запретить использование стратегии WT и отключить стратегию предварительного считывания массива

2 Оптимизация уровня операционной системы

1. Выбор операционной системы и экземпляра MySQL

1. Обязательно выберите систему x86_64, рекомендуем использовать CentOS 6.8 linux , отключите NUMA особенности

2. Отделение операционной системы от данных является не только логическим, но и физическим.

3. Избегайте разделов подкачки подкачки

4. Избегайте использования программных дисковых массивов

5. Избегайте использования логических томов LVM

6. Удалите неиспользуемые установочные пакеты и демоны на сервере

2. Оптимизация уровня файловой системы

(1) Отрегулируйте режим дискового кэша

Включить (Включить кэш записи), (Отключить кэш чтения) режим

Команда: hdparm-s,-S/dev/sdb

(2) крайний срок использования Linux Алгоритм планировщика ввода-вывода Параметры планирования крайнего срока Для Centos Linux,/2 write_expire рекомендуется

echo 500 >/sys/блокировать/sdb/очередь/iosched/read_expire

echo 1000 >/sys/блокировать/sdb/очередь/iosched/write_expire

Метод планирования ввода-вывода Linux Алгоритмы планирования ввода-вывода Linux

(3) Использование файловой системы XFS Ext4 также можно использовать, когда объем бизнеса не очень велик. Рекомендуется использовать xfs: настройте журналы файловой системы XFS и переменные буфера. Настройки высокой производительности XFS

(4) увеличение монтирования файловой системы: async, noatime, nodiratime, nobarrier и т. Д.

ноатиме

Не обновляет метку времени узла при доступе к файлам. В условиях высокой параллельности применение push-line дисплея может улучшить систему Производительность ввода-вывода.

асинхронный

При записи данные сначала будут записаны в буфер памяти. Только когда жесткий диск пуст, он может быть записан на диск. Это может повысить эффективность написания! Риск заключается в том, что если сервер выйдет из строя или выйдет из строя, он потеряет решения для передачи данных, которые не записаны на диск в буфере: батареи материнской платы сервера или ИБП источник бесперебойного питания

нодиратиме

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

нобарье

На RAID-картах нет батареек

(5) Оптимизация Параметров Ядра Linux 1. Установите для виртуальной машины и подкачки значение 0-10 2. Установите для VM и dirty_background_ratio значение 5-10, а для VM и dirty_ratio-примерно в два раза больше, чтобы обеспечить непрерывное обновление грязных данных на диск, избежать мгновенной записи ввода-вывода и вызвать серьезное ожидание.

3. Оптимизация стека TCP

net.ipv4.tcp_tw_рецикл=1

net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_крепление_времени=600

net.ipv4.tcp_крепление_времени=600

сеть,ipv4.tcp_syn_прибыли

сеть,ipv4.tcp_syn_прибыли

net.ipv4.ip_local_порт_ранж 65535

4. Оптимизация сети

Сеть. ядро. # максимальный буфер чтения сокета

Сеть. ядро. # максимальный буфер записи сокета

Сеть. ядро. # Этот файл определяет размер буфера принимающего сокета по умолчанию

Значение (в байтах)

Значение (в байтах)

net.ipv4.tcp_rmem=4096 87380 16777216

net.ipv4.tcp_wmem=4096 65536 16777216

net.ipv4.tcp_mem 915000000 927000000

net.core.netdev_max_backlog=3000

5. Другие Оптимизации

Другие Оптимизации

Другие Оптимизации

Другие Оптимизации

Совет: Расскажите о структуре во время интервью, а затем укажите один или два небольших параметра оптимизации. Дополнительные ядра можно найти в главе 3 Учебников по эксплуатации и техническому обслуживанию со Старыми мальчиками и в нашем блоге, который будет обновлен в ближайшем будущем.

3 Оптимизация уровня базы данных MySQL

Оптимизация параметров My.cnf

Эта оптимизация в основном направлена на движок InnoDB

Если вы используете движок MyISAM, вам необходимо увеличить размер key_buffer_size.

Настоятельно рекомендуется использовать движок Innodb,

Отрегулируйте размер innodb_buffer_pool_size и подумайте о том, чтобы установить его на 50-60% физической памяти.

Установите значения inno_flush_log_at_trx_commit и sync_binlog в соответствии с фактическими потребностями.

Если вам нужны данные, которые нельзя потерять, установите для обоих значение 1. Если допускается потеря больших данных,

Они могут быть установлены на 2 и 0, соответственно, и 0 на ведомом устройстве.

Установите для использования отдельного табличного пространства

Установите:1G: АВТОМАТИЧЕСКОЕ РАСШИРЕНИЕ вместо использования по умолчанию 10%

Набор, набор, в основном

Более 90% сценариев удовлетворены.

Не устанавливайте параметр innodb_log_file_size слишком большим, чтобы обеспечить более быстрое и свободное место на диске.

Обычно полезно потерять больше журналов, что может уменьшить вероятность восстановления базы данных после сбоя базы данных.

Установите для записи более медленного выполнения SQL для последующего анализа и исследования;

Отрегулируйте max_connection (max_connection_error) соответствующим образом в соответствии с фактическим бизнесом потребности

(Рекомендуется, чтобы максимальное количество ошибок превышало 100 000, в то время как open_files_limit, innodb_open_files,

Параметры table_open_cache, table_definition_cache могут быть установлены примерно в 10 раз больше, чем

Размер max_connection;) Не устанавливайте его слишком большим, это приведет к разрыву базы данных.

tmp_table_size,max_heap_table_size,размер сортировочного буфера、

Join_buffer_size, read_buffer_size, read_rnd_buffer_size и т.д.

Каждый сеанс подключения выделяется, поэтому его нельзя устанавливать слишком большим

Рекомендуется отключить функцию кэширования запросов или уменьшить настройки до не более 512 м.

Дополнительные параметры ядра: Введение в параметры профиля My-innodb-heavy-4G.cnf

Инструмент MySQL отчет mysql может быть использован для анализа производительности MySQL Как добиться высокого одновременного доступа к веб-сайтам? Обсуждения по предотвращению DDOS-атак в производственных средах В интервью может быть задан вопрос о защите от DOS-атак

Технические требования к дизайну библиотечных таблиц

Рекомендуется использовать набор символов UTF-8, хотя некоторые люди говорят, что это не так быстро, как latin1.

В столбцах с фиксированной строкой максимально используется символ фиксированной длины, а varchar-меньше.

Хранение строк переменной длины с использованием VARCHAR вместо CAHR — экономит место потому что это исправлено

Длина ДИАГРАММЫ, в то время как длина VARCHAR не фиксирована (UTF8 не беспокоится об этом эффекте)

Все таблицы InnoDB разработаны с надстройкой некоммерческого назначения в качестве первичного ключа

Если длина поля удовлетворяет требованиям, выберите, насколько это возможно, меньшее поле.

Атрибуты полей максимально ограничены значением NOT NULL

Для некоторых текстовых полей, таких как “провинции” или “пол”, мы можем определить их как тип ПЕРЕЧИСЛЕНИЯ, по возможности не используя тип ТЕКСТА/большого двоичного объекта. При необходимости мы рекомендуем разделить их на вложенные таблицы вместо основных таблиц.

Вместе избегайте слишком плохого чтения SELECT*.

При чтении данных выбирайте только нужные вам столбцы, а не ВЫБИРАЙТЕ * каждый раз, чтобы избежать серьезного случайного чтения

Вопросы, особенно когда вы читаете некоторые типы ТЕКСТА/больших двоичных объектов, рекомендуется разбивать на подтаблицы, если они вам действительно нужны.

Храните его вместе с основной таблицей, чтобы избежать низкой производительности чтения при выборе*

При создании индекса для столбца VARCHAR (N) обычно создается префикс длиной около 50% (или даже меньше).

Индексов достаточно, чтобы удовлетворить более 80% требований к запросам. Нет необходимости создавать полноразмерный индекс всего столбца.

Используйте индекс совпадения больше, используйте менее независимый индекс, особенно если количество элементов слишком мало

(Если общее количество уникальных значений столбца меньше 255), не создавайте отдельный индекс для столбца.

4 Оптимизация инструкций SQL

Оптимизация индекса 1) Механизм белого списка 100 градусов, разработка проекта, участие администратора баз данных, сокращение медленных данных SQL в режиме онлайн, захват медленного SQL и настройка my.cnf

long_query_time

log-медленные запросы=/данные/3306/медленный журнал.журнал

log_queries_но_использование_индексов

Ежедневный опрос: медленный журнал.журнал

2) Инструмент анализа журнала для медленного запроса: Mysqlslap или pt-запрос-дайджест (рекомендация)

pt-запрос-дайджест,mysqldumpslow,mysqlsla,myprofi,mysql-объяснение-медленный журнал,файл журнала mysql там

3) Анализируйте медленные запросы в 0:00 вечера и отправляйте их на почтовый ящик отдела разработки ядра, анализа баз данных, расширенных операций и технического обслуживания, технический директор. Анализ DBA дает предложения по оптимизации – > Обновление подтверждения разработки ядра – > Оперативная обработка DBA в режиме онлайн 4) Регулярно используйте pt-дубликат-проверку ключей для проверки и удаления повторяющихся индексов Периодически используйте инструмент использования pt-индекса для проверки и удаления очень низкочастотных индексов 5) Используйте pt-online-изменение схемы для выполнения ОНЛАЙН-требований DDL для больших таблиц 6) Иногда MySQL использует неправильный индекс, и в этом случае используется индекс USE. 7) Используйте explain и set profile для оптимизации инструкций SQL

Большие и сложные операторы SQL разделяются на несколько небольших подзапросов операторов SQL, запрос на объединение связанных таблиц, 40 миллионов записей таблицы База данных-это место, где хранятся данные, но не там, где данные вычисляются. Для вычисления данных и обработки класса приложений они должны быть решены с помощью интерфейсного приложения. Запретить обработку в функции поиска баз данных, например ” % oldboy%”, как правило, не используйте базу данных MySQL, Используйте СОЕДИНЕНИЕ вместо вложенных запросов, избегайте cout (*) для всей таблицы, которая может заблокировать всю таблицу При соединении запросов с несколькими таблицами, типы связанных полей должны быть как можно более согласованными, и должны быть индексы. Используйте ОБЪЕДИНЕНИЕ вместо подзапроса в предложении WHERE При объединении запросов с несколькими таблицами в качестве управляющей таблицы используется таблица с небольшим результирующим набором (обратите внимание, что отфильтрованный результирующий набор отличается от таблицы с небольшим объемом данных).

Процесс сбора данных искателями

5 Оптимизация архитектуры кластера веб-сайтов

1. Несколько экземпляров, запущенных на сервере, 2-4 (необходимо просмотреть информацию об оборудовании сервера)

2. Репликация Master-slave, репликация master-slave, репликация с пятью подчиненными, смешанный режим, старайтесь не синхронизировать по всему компьютерному залу (обрабатывайте удаленное чтение и запись)

3. Регулярное использование pt-table-контрольной суммы и pt-table-синхронизации для проверки и устранения различий в данных между основной и подчиненной репликацией MySQL

4. Разделение бизнеса: Функция поиска, такая как “% Oldboy”, обычно не использует базу данных MySQL

5. Разделение бизнеса: Некоторые бизнес-приложения используют постоянное хранилище NoSQL, такое как memcached, redis, ttserver.

Например, внимание болельщиков, дружба и т.д.

6. Передняя часть базы данных должна добавить кэш, такой как memcached, логин пользователя, запрос товара.

7. Динамическая статика базы данных, статика всего файла, статика фрагмента страницы

8. Кластер баз данных и разделение операций чтения и записи. Разделение кластера на чтение и запись по программам или dbproxy

9. Более 8 миллионов отдельных столов разобраны. Ручная разборка таблицы и разборка библиотеки (логин, товары, заказы)

10. Первые три компании в Baidu и Ali выберут резервное копирование из базы данных и разделят базу данных на суб-базы данных и суб-таблицы.

6 Оптимизация процессов и управления системой MySQL

Каждый раз, когда пользователь обновляет запись базы данных, необходимо следовать определенному процессу:

A. Процесс человека: Разработка – > Основная разработка – > Эксплуатация и техническое обслуживание или DBA

B. Поток тестирования: Тест в интрасети – > тест IDC – > онлайн-выполнение

C. Управление клиентами, phpMyAdmin

Базовая безопасность MySQL

1. Запустите программу 700, владельцем и группой пользователей является MySQL

2. Установите пароль для суперпользователя MySQL root

3. Если требуются строгие требования, пользователи root могут быть удалены, а другие пользователи с правами администратора, такие как администратор, могут быть созданы.

4. Не предоставляйте пароли в командной строке при входе в систему. Если в сценарии резервного копирования есть пароль, установите 700.

Владельцем и криптографической группой являются MySQL или root

5. Удалите библиотеку тестов по умолчанию

6. Первоначально удалите бесполезных пользователей, только сохраните

| корень | 127.0.0.1 |

| корневой | локальный хост |

7. Не используйте одного пользователя для управления всеми библиотеками, старайтесь быть посвященным библиотекам.

8. Очистите файл журнала операций MySQL ~/. mysql_history (разрешение 600, не может быть удалено)

9. Запретить разработку паролей для получения веб-соединений и запретить разработку библиотек для создания внешних ссылок.

10. Безопасность phpMyAdmin

11. Сервер запрещает настройку IP внешней сети

12. Мониторинг И Контроль подключаемых модулей для Защиты от SQL-инъекций (WEB) php.ini или Веб-Разработки

Оригинал: “https://developpaper.com/server-system-optimization/”