У меня недавно были проблемы с перебоями из-за нехватки памяти. (Мой VPS имеет 256M всего)
Я пытаюсь настроить MySQL, используя mysqltuner.pl, и получить следующие результаты:
-------- Общая статистика ---------------------------------------- ----------
[-] Пропущена проверка версии для скрипта MySQLTuner
[OK] В настоящее время работает поддерживаемая версия MySQL 5.0.51a-3ubuntu5.4-log
[OK] Работа на 64-битной архитектуре
-------- Статистика подсистемы хранения --------------------------------------- ----
[-] Статус: + Архив -BDB -Federated -InnoDB -ISAM -NDBCluster
[-] Данные в таблицах MyISAM: 114M (таблицы: 454)
[!!] Всего фрагментированных таблиц: 34
-------- Показатели эффективности ---------------------------------------- ---------
[-] В течение: 40 с (570 q [14,250 qps], 23 conn, TX: 154K, RX: 23K)
[-] Чтение / запись: 100% / 0%
[-] Всего буферов: 338,0М глобально + 2,7М на поток (не более 20 потоков)
[!!] Максимально возможное использование памяти: 392,9 МБ (153% от установленной ОЗУ)
[OK] Медленные запросы: 0% (5/570)
[OK] Максимальное использование доступных соединений: 15% (3/20)
[!!] Размер буфера ключа / всего индексов MyISAM: 8,0M / 9,4M
[!!] Частота попаданий в ключевой буфер: 57,1% (7 кэшированных / 3 чтения)
[OK] Эффективность кэша запросов: 21,9% (7 кэшированных / 32 выбора)
[OK] Запрос обрезки кеша в день: 0
[OK] Сортировка, требующая временных таблиц: 0% (0 временных сортировок / 1 сортировка)
[OK] Временные таблицы, созданные на диске: 0% (0 на диске / 32 всего)
[OK] Частота попаданий в кэш потоков: 86% (3 созданных / 23 подключения)
[OK] Частота попаданий в кеш таблиц: 26% (128 открытых / 484 открытых)
[OK] Используемый лимит открытого файла: 25% (259 / 1K)
[OK] Столовые блокировки получены немедленно: 100% (492 немедленных / 492 блокировки)
-------- Рекомендации ----------------------------------------- ------------
Общие рекомендации:
Запустите OPTIMIZE TABLE, чтобы дефрагментировать таблицы для повышения производительности.
MySQL запустился в течение последних 24 часов - рекомендации могут быть неточными
Уменьшите общий объем памяти MySQL для стабильности системы
Переменные для настройки:
*** Максимальное использование памяти MySQL опасно высоко ***
*** Добавьте RAM до увеличения буферных переменных MySQL ***
key_buffer_size (> 9,4 млн)
Но я немного озадачен тем, как снизить максимальное использование памяти? Кажется, он основан на key_buffer и max_connections, но должно быть что-то еще?
my.cnf:
key_buffer = 8M max_allowed_packet = 12M нить стека = 128 КБ thread_cache_size = 8 max_connections = 20 table_cache = 128 tmp_table_size = 256M max_heap_table_size = 256M join_buffer_size = 256K query_cache_limit = 8M query_cache_size = 64M
Я пытался прочитать статьи по настройке MySQL, но они, похоже, ориентированы на людей, которые уже знают, что они делают! Любая помощь будет оценена. Благодарность!