Если поднимать вопрос о оптимизации нашей системы, то узким местом системы будет база данных MySQL. Есть смысл вместо стандартной MySQL поставить Percona Server. В двух словах - это оптимизированная сборка MySQL полностью совместимая с форматами хранения (взятого с офсайта) MySQL.
В итоге получим Большое число оптимизаций для более эффективной работы сервера. Например, быстрое выключение, предзагрузка буферного пула, быстрые алгоритмы контрольных сум, неблокирующие алгоритмы и множество других изменений.
Также получаем
- Больше параметров для более тонкой настройки
- Больше параметров и возможностей для сбора статистики (например, лог медленных запросов менее секунды)
- Более эффективное управление памятью
- Более эффективная работа на большом количестве ядер
По установке есть небольшой мануал на оф. сайте: http://www.percona.com/doc/percona-server/
Перед установкой Percona Server на Debian сначала необходимо удалить Mysql.
Ниже команды именно полного удаления MySQL. Если у вас уже есть базы - позаботьесь о бекапе.
apt-get remove mysql*
apt-get purge mysql*
apt-get autoremove
Также удаляем инструмент администрирования баз данных MySQL - PHPMyAdmin если такой установлен, так как его придется устанавливать заново с другими модулями.
apt-get remove phpmyadmin
apt-get autoremove
Устанавливать будем из репозиториев.
Откроем файл /etc/apt/sources.list и добавим в него
deb http://repo.percona.com/apt wheezy main
deb-src http://repo.percona.com/apt wheezy main
Если у нас ранее использовались репозитории squeeze то видимо Перкону также надо устанавливать из squeeze чтобы сохранить зависимости для PHP клиента и апача.
deb http://repo.percona.com/apt squeeze main
deb-src http://repo.percona.com/apt squeeze main
Импортируем ключ командой
apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
Чтобы избежать обновлений с Debian репозитория создадим файл /etc/apt/preferences.d/00percona.pref
nano /etc/apt/preferences.d/00percona.pref
добавим следующие строки
Package: *
Pin: release o=Percona Development Team
Pin-Priority: 1001
Обновим список пакетов
apt-get update
Теперь можно ставить сервер и клиент
apt-get install percona-server-server percona-server-client libmysqlclient18
При установке из squeeze репозитория:
apt-get install -t squeeze percona-server-server percona-server-client libmysqlclient16
При установке будет запрошен пароль для Percona сервера.
Если установка будет прервана из за конфликта зависимостей, то устанавливаем зависимости командой
apt-get install -f
Введите следующую команду, чтобы проверитьуспешность установкиPerconaServer.
mysql -u root -p
Пример вывода
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 201
Server version: 5.6.14-62.0 Percona Server (GPL), Release 62.0
Copyright (c) 2009-2013 Percona LLC and/or its affiliates
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
После первых тестов сервера выяснилось что Percona на локальном сервере-виртуалке потребляет около 80% доступной оперативной памяти даже в простое. По крайней мере с конфигом по умолчанию. Напомню что виртуалка создавалась с 512мб оперативы.
При использовании MySQL из репозитория на сервере с Debian 6 даже со стандартными конфигами без тюнинга такого не наблюдалось. В качестве нагрузки я устанавливал на хост этот же сайт.
Возможно такая ситуация возникает из-за конфликта зависимостей, так как я использовал php 5.3 и клиент для работы с базой данных из репозитория squeeze.
При попытке добавить в конфиги файл /etc/mysql/my.cnf которым обычно можно тюнить сервер, и добавив несколько директив - Percona перестала запускаться.
Погуглив выяснилось также что по умолчанию my.conf не создается в Percon'е и примеров файла как в мускуле тут нет.
Еще немного покопав основной конфиг и не добившись снижения потребляемой памяти - я решил заменить Перкону на известный мне Mysql.
На другом тестовом сервере с дистрибутивами wheezy Percona потребляла около 40% общей памяти от 512мб на сервере.
Отключив InnoDB и протестив еще раз - изменений небыло. Все те же 40% процентов. А это, как мне кажется для VDS-ки будет уже неприемлемо.
Для того чтобы узнать какие настройки сейчас использует mysql, смотрим команду:
mysqld --help --verbose
До MySQL 5.5 поддержка InnoDB отключалась с помощью строчки "skip-innodb" в /etc/mysql/my.cnf.
Но с выходом MySQL 5.5 поменялся синтаксис, и теперь при использовании строки "skip-innodb", mysql не стартует:
[FAIL] Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!
Для отключения теперь пишем в /etc/mysql/my.cnf:
ignore-builtin-innodb
default-storage-engine=MyISAM
Percona же пишет:
[Warning] The option innodb (skip-innodb) is deprecated and will be removed in a future release
[Note] Plugin 'InnoDB' is disabled.
Если у вас есть информация по тестированию и тюнингу Percona на слабых Vds - пишите в комментах.
Здесь решение по уменьшению объема потребляемой оперативной памяти.
Возможно эта статья сэкономит вам время и нервы, и вы не станете сразу устанавливать Перкону на продакшен сервер, а также, сначала протестируете сборку в песочнице.
Рубрики
-
3D и графика ( 7 )
-
Веб разработка ( 13 )
-
Железо и периферия ( 8 )
-
Портфолио и резюме ( 3 )
-
Сервер на Debian Linux ( 20 )
-
Сисадмину на заметку ( 14 )
-
Тестовая лаборатория ( 10 )
Новые записи
25.03.23 Ошибка 0x00000709 при попытке установить сетевой USB принтер
05.10.19 Добавление сертификата в exim4
18.08.18 Утилиты диагностики системы Linux
02.10.16 Отключение systemd на Debian
Комментарии
- Всё отлично! Спасибо за гайд!
03.03.24 08:01 комментирует: Luidgi Vampa - Добрый день! Спасибо вам за ваши статьи! Подскажите пожалуйста. Как проверить ус...
17.01.24 01:47 комментирует: Олег - Спасибо, проделал на ноутбуке dv5-1040er, скорость реально выросла. Делал на w10...
10.10.23 15:58 комментирует: Евгений - у мене схожа проблема як була у вас... чому ви вирішили ввести 92500000??? дякую...
11.04.23 01:51 комментирует: Володимир
Комментарии
29.10.2015 15:14
apt-get remove mysql*
удаляется далеко не только mysql, а еще много чего.
05.10.2015 14:46
06.08.2015 14:13
apt-get remove phpmyadmin apt-get autoremove
надобы поменять на
apt-get remove phpmyadmin && apt-get autoremove