VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Во что упирается производительность vBulletin - проблемы (MySQL, Apache, Nginx, серверное железо)
4
Здравствуйте,
Маленькая предыстория. Имею 3 небольших форума на vBSuite 4.2.0, суммарная посещаемость проектов ~5000 ч/сутки, суммарное количество тем ~150тыс., сообщений ~3млн. Администрирую форумы сам, обслуживаю сервер тоже. Использую архитектуру Debian 6 + Nginx(front-end) + Apache(back-end) + MySQL 5.1. До недавнего времени размещался на VDS с RAM 512mb, производительность упиралась в количество RAM используемой MySQL, поэтому все решалось настройками my.cnf. В пики посещаемости форум начинал слегка подтормаживать (загрузка страниц поднималась до 3-4 сек) но было терпимо, а вот узким местом стала генерация карты сайта vBSEO Sitemap, во время нее сервер уходил в своп и переставал отдавать форумы примерно на час. Хоть это и происходило редко, но крайне действовало на нервы, с распределением RAM бороться уже надоело. Любое обновление базы данных, для модулей или просто чистка - вызывало тормоза, иногда оборачивалось падением. Что ж, пора апгрейдиться.
Чтобы не заморачиваться с дальнейшим масштабированием проектов, нужно было в первую очередь отказаться от виртуальных серверов, потому арендовал новый сервер помощнее:
Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
RAM 32GB
HDD 2x3TB SATA 6 Gb/s 7200 rpm (Software-RAID 1)
Архитектуру решил оставить ту же, настройки Apache (prefork) и Nginx взял со старого VDS:
При переносе проектов встретилась первая проблема: у двух форумов была база на InnoDB, у одного на MyISAM. Решено было за большинство, поэтому MyISAM конвертнул в InnoDB. Итого у всех форумов структура такая:
Честно сказать, не был обременен вопросом, что из этого быстрее, как уже писал, взял за большинство, и сделал InnoBD.
Сутки после установки погонял базу на дефолтных конфигах MySQL. После понемногу начал вносить изменения. Итого спустя неделю конфиг такой (некоторые параметры преднамеренно завысил, посмотреть на производительность БД, благо памяти пока много.):
Форумы грузятся быстро, средняя нагрузка MySQL на CPU 0,8%, в пике до 5%, объем потребляемой RAM 5Гб.
Дальше занялся обновлением счетчиков (Обслуживание-Основные инструменты обновления). Вот тут я и встретился со своей главной проблемой. Например функции "Перестроить информацию о темах" или "Перестроить похожие темы" работают очень медленно, при этом нагрузка на цп не поднимается выше 10%, потребление памяти увеличивается примерно на 1Гб. На локальном тестовом сервере это проходило гораздо быстрее, на дефолтных конфигах то! Судя по всему проблема в базе данных. Вот отчет PMA за текущие сутки:
Статистика запросов: со времени запуска, на сервер было отослано запросов - 1,565,543.
Всего ? в час ? в минуту ? в секунду
1,566 k 66.84 k 1.11 k 18.57
Тип запроса ? в час %
select 960 k 40.978 k 61.93%
insert 219 k 9.364 k 14.15%
delete 180 k 7.703 k 11.64%
update 116 k 4.972 k 7.51%
set option 29 k 1.231 k 1.86%
change db 26 k 1.127 k 1.70%
replace 2,413 103.019 0.16%
show status 1,133 48.372 0.07%
show tables 157 6.703 0.01%
update multi 155 6.617 0.01%
show keys 90 3.842 0.01%
Тип запроса ? в час %
insert select 77 3.287 0.00%
create table 71 3.031 0.00%
drop table 71 3.031 0.00%
truncate 68 2.903 0.00%
show binlogs 44 1.879 0.00%
show variables 35 1.494 0.00%
delete multi 27 1.153 0.00%
show databases 20 0.854 0.00%
show fields 19 0.811 0.00%
show storage engines 12 0.512 0.00%
show slave status 11 0.470 0.00%
Тип запроса ? в час %
show master status 11 0.470 0.00%
show table status 8 0.342 0.00%
show grants 6 0.256 0.00%
replace select 6 0.256 0.00%
show collations 5 0.213 0.00%
show plugins 5 0.213 0.00%
show charsets 5 0.213 0.00%
admin commands 3 0.128 0.00%
flush 1 0.043 0.00%
show slave hosts 1 0.043 0.00%
SQL-запрос
Переменная Значение Описание
Flush_commands 1 Количество выполненных команд FLUSH.
Last_query_cost 0 Общие затраты последнего компилированного запроса, рассчитанные оптимизатором запросов. Полезно при сравнении эффективности различных схем одного запроса. Изначальное нулевое значение, означает, что процесса компиляции запроса еще не было.
Slow_queries 0 Количество запросов, выполнявшихся более long_query_time секунд.
InnoDB
Переменная Значение Описание
Innodb_buffer_pool_pages_data 88 k Количество страниц содержащих данные ("грязные" или "чистые").
Innodb_buffer_pool_pages_dirty 3 Текущее количество "грязных" страниц.
Innodb_buffer_pool_pages_flushed 51 k Количество страниц буферного пула, над которыми был осуществлен процесс очистки (FLUSH).
Innodb_buffer_pool_pages_free 957 k Количество свободных страниц.
Innodb_buffer_pool_pages_misc 3,858 Количество страниц занятых вследствие выделения под административные процессы, такие как: блокировка строки или адаптивное хеширование индекса. Значение можно рассчитать по формуле: Innodb_buffer_pool_pages_total - Innodb_buffer_pool_pages_free - Innodb_buffer_pool_pages_data.
Innodb_buffer_pool_pages_total 1,049 k Общий размер буферного пула (в страницах).
Innodb_buffer_pool_read_ahead_rnd 9 Количество "случайных" опережающих чтений, инициированных InnoDB. Это происходит, когда запрос сканирует большую часть таблицы в случайном порядке.
Innodb_buffer_pool_read_ahead_seq 1,164 Количество последовательных опережающих чтений, инициированных InnoDB. Это происходит, когда InnoDB выполняет полное последовательное сканирование таблицы.
Innodb_buffer_pool_read_requests 120 M Количество последовательных запросов на чтение, выполненных InnoDB.
Innodb_buffer_pool_reads 49 k Количество последовательных запросов на чтение, которые InnoDB не смог выполнить из буферного пула и использовал постраничное чтение.
Innodb_buffer_pool_wait_free 0 Обычно, записи в буферный пул InnoDB выполняются в фоновом режиме. Однако, если необходимо чтение или создание страницы при отсутствии чистых таковых, сперва требуется ожидание их очистки. Данный счетчик показывает число таких ожиданий. Если размер буферного пула был установлен должным образом, значение будет небольшим.
Innodb_buffer_pool_write_requests 1,176 k Количество записей, выполненных в буферный пул InnoDB.
Innodb_data_fsyncs 254 k Количество операций fsync(), выполненных на данный момент.
Innodb_data_pending_fsyncs 1 Текущее количество незавершенных операций fsync().
Innodb_data_pending_reads 0 Текущее количество незавершенных операций чтения.
Innodb_data_pending_writes 0 Текущее количество незавершенных операций записи.
Innodb_data_read 1,433 M Сумма данных (в байтах), прочитанных на данный момент.
Innodb_data_reads 55 k Общее количество операций чтения данных.
Innodb_data_writes 285 k Общее количество операций записи данных.
Innodb_data_written 1,872 M Сумма данных (в байтах), записанных на данный момент.
Innodb_dblwr_pages_written 51 k Количество записей в буфер doublewrite, и количество созданных для этого страниц.
Innodb_dblwr_writes 6,401 Количество записей в буфер doublewrite, и количество созданных для этого страниц.
Innodb_log_waits 10 Количество ожиданий очистки журнального буфера, вследствие малого его размера.
Innodb_log_write_requests 178 k Количество запросов на запись в журнал.
Innodb_log_writes 237 k Количество физических записей в файл журнала.
Innodb_os_log_fsyncs 242 k Количество записей с помощью fsync(), сделанных в файл журнала.
Innodb_os_log_pending_fsyncs 1 Количество незавершенных попыток синхронизации с помощью операции fsync().
Innodb_os_log_pending_writes 0 Количество незавершенных запросов на запись в журнал.
Innodb_os_log_written 209 M Объем данных в байтах, записанных в файл журнала.
Innodb_page_size 16 k Размер страницы, компилируемой в InnoDB (по умолчанию 16Кб). Многие значения приводятся в страницах, но зная объем страницы, можно перевести эти значения в байты.
Innodb_pages_created 252 Количество созданных страниц.
Innodb_pages_read 87 k Количество прочитанных страниц.
Innodb_pages_written 51 k Количество записанных страниц.
Innodb_row_lock_current_waits 0 Текущее количество ожиданий блокировок строк.
Innodb_row_lock_time 1,626 Общее время, ожидания блокировок строк (в миллисекундах).
Innodb_row_lock_time_avg 25 Среднее время ожидания блокировки строк (в миллисекундах).
Innodb_row_lock_time_max 105 Максимальное время ожидания блокировки строк (в миллисекундах).
Innodb_row_lock_waits 64 Общее количество ожиданий блокировки строк.
Innodb_rows_deleted 271 Количество строк, удаленных из таблиц InnoDB.
Innodb_rows_inserted 10 k Количество строк, добавленных в таблицы InnoDB.
Innodb_rows_read 39 M Количество строк, прочитанных из таблиц InnoDB.
Innodb_rows_updated 214 k Количество строк, обновленных в таблицах InnoDB.
Обработчик
Переменная Значение Описание
Handler_commit 1,424 k Количество внутренних команд COMMIT.
Handler_delete 1,559 Количество запросов на удаление строк из таблицы.
Handler_discover 0 MySQL-сервер может запрашивать NDB Cluster о существовании таблиц с определенным именем. Этот процесс называется обнаружением. Handler_discover - число обнаружений таблиц.
Handler_prepare 235 k
Handler_read_first 221 k Количество запросов на чтение первой записи из индекса. При большом значении переменной, скорее всего, сервер многократно выполняет полное сканирование индекса. Например, SELECT col1 FROM foo, при условии, что col1 проиндексирован.
Handler_read_key 6,135 k Количество запросов на чтение строк, построенных на значении ключа. Большое значение переменной говорит о том, что запросы и таблицы проиндексированы надлежащим образом.
Handler_read_next 18 M Количество запросов на чтение следующей строки в порядке расположения индексов. Значение увеличивается при запросе индексного столбца с ограничением по размеру или при сканировании индекса.
Handler_read_prev 12 M Количество запросов на чтение предыдущей строки при ниспадающей сортировке индекса. Обычно используется при оптимизации: ORDER BY ... DESC.
Handler_read_rnd 193 k Количество запросов, на чтение строки, основанных на ее позиции. Большое значение переменной может быть обусловлено частым выполнением запросов использующих сортировку результата, выполнением большого числа запросов требующих полного сканирования таблиц, наличием объединений не использующих индексы надлежащим образом.
Handler_read_rnd_next 5,743 k Количество запросов на чтение следующей строки из файла данных. Данное значение будет высоким, при частом сканировании таблиц. Обычно это означает, что таблицы не проиндексированы надлежащим образом или запросы не используют преимущества индексов.
Handler_rollback 0 Количество внутренних команд ROLLBACK.
Handler_savepoint 0
Handler_savepoint_rollback 0
Handler_update 283 k Количество запросов на обновление строк в таблице.
Handler_write 458 k Количество запросов на вставку строк в таблицу.
Кеш запросов
Переменная Значение Описание
Qcache_free_blocks 2 Количество свободных блоков памяти в кеше запросов.
Qcache_free_memory 129 M Объем свободной памяти для кеша запросов.
Qcache_hits 15 k Количество "попаданий" в кеш запросов, т.е. сколько запросов было удовлетворено запросами, находящимися в кеше.
Qcache_inserts 131 k Количество запросов, добавленных в кеш запросов.
Qcache_lowmem_prunes 0 Количество запросов, удаленных из кеша для освобождения памяти под кеширование новых запросов. Эта информация может помочь при настройке размера кеша запросов. Кеш запросов использует стратегию LRU (дольше всего не использующиеся страницы заменяются новыми) при принятии решения об удаления запроса из кеша.
Qcache_not_cached 829 k Количество запросов, которые оказались некешируемыми или для которых кеширование было подавлено с помощью ключевого слова SQL_NO_CACHE.
Qcache_queries_in_cache 629 Количество запросов, зарегистрированных в кеше.
Qcache_total_blocks 1,281 Суммарное количество блоков памяти, отведенных под кеш запросов.
Потоки
Переменная Значение Описание
Slow_launch_threads 0 Количество потоков, на создание которых потребовалось более чем slow_launch_time секунд.
Threads_cached 4 Количество потоков в потоковом кеше. Частоту успешных обращений к кешу можно вычислить по формуле Threads_created/Connections. Если это значение окрашено в красный цвет - вам следует увеличить thread_cache_size.
Threads_connected 3 Количество открытых текущих соединений.
Threads_created 7 Полное количество потоков, созданных для поддержания соединений с клиентом. При большом значении переменной, можно увеличить значение переменной thread_cache_size (это не даст существенного выигрыша в производительности, при хорошей реализации потоков).
Threads_running 2 Количество процессов, находящихся в активном состоянии.
Threads_cache_hitrate_% 99.96 %
Бинарный журнал
Переменная Значение Описание
Binlog_cache_disk_use 87 Количество транзакций, использовавших кеш бинарного журнала и превысивших значение binlog_cache_size, вследствие чего содержащиеся в них SQL-выражения были сохранены во временном файле.
Binlog_cache_use 298 k Количество транзакций, использовавших кеш бинарного журнала.
Временные данные
Переменная Значение Описание
Created_tmp_disk_tables 187 Количество временных таблиц, автоматически созданных сервером на диске, во время выполнения SQL-выражений. Если значение Created_tmp_disk_tables велико, следует увеличить значение переменной tmp_table_size, чтобы временные таблицы располагались в памяти, а не на жестком диске.
Created_tmp_files 90 Количество временных файлов, созданных MySQL-сервером (mysqld).
Created_tmp_tables 283 k Количество временных таблиц в памяти, созданных сервером автоматически в процессе выполнения SQL-выражений.
Отложенные вставки
Переменная Значение Описание
Delayed_errors 0 Количество ошибок, возникших в процессе обработки запросов INSERT DELAYED, например, из-за дублирования ключей.
Delayed_insert_threads 0 Количество обрабатываемых запросов INSERT DELAYED.
Delayed_writes 0 Количество строк записанных в режиме отложенной вставки данных (INSERT DELAYED).
Not_flushed_delayed_rows 0 Количество строк, ожидающих вставки в запросах INSERT DELAYED.
Кеш индекса
Переменная Значение Описание
Key_blocks_not_flushed 0 Количество блоков в кеше индекса, которые были изменены, но еще не записаны на диск. Данный параметр также известен как Not_flushed_key_blocks.
Key_blocks_unused 1,701 k Количество неиспользуемых блоков в кеше индекса. Данный параметр позволяет определить как полно используется кеш индекса.
Key_blocks_used 13 k Количество используемых блоков в кеше индекса. Данное значение - максимальное количество блоков, использованных одновременно.
Key_read_requests 3,742 k Количество запросов на чтение блока из кеша индексов.
Key_reads 2,724 Количество физических операций чтения блока индексов с диска. Если значение велико - скорее всего, задано слишком маленькое значение переменной key_buffer_size. Коэффициент неудачных обращений к кешу может быть рассчитан как: Key_reads/Key_read_requests.
Key_write_requests 788 k Количество запросов на запись блока в кеш индекса.
Key_writes 771 k Количество физических операций записи блока индексов на диск.
Key_buffer_fraction_% 18.87 %
Key_write_ratio_% 97.84 %
Key_read_ratio_% 0.07 %
Объединения
Переменная Значение Описание
Select_full_join 22 Количество запросов-объединений, выполненных без использования индексов. Если значение переменной не равно 0, рекомендуется проверить индексы таблиц.
Select_full_range_join 9 Количество запросов-объединений, выполненных с использованием поиска по диапазону в таблице, на которую делается ссылка.
Select_range 76 k Количество запросов-объединений, выполненных с использованием поиска по диапазону в первой таблице. Обычно значение этой переменной не критично, даже если оно велико.
Select_range_check 0 Количество запросов-объединений, выполненных с использованием поиска по диапазону для выборки строк из вторичной таблицы. Если значение переменной не равно 0, рекомендуется проверить индексы таблиц.
Select_scan 27 k Количество запросов-объединений, выполненных с использованием полного поиска по первой таблице.
Репликация
Переменная Значение Описание
Rpl_status NULL Состояние отказоустойчивой репликации (пока не реализовано).
Slave_open_temp_tables 0 Количество временных таблиц, открытых в настоящий момент подчиненным потоком.
Slave_retried_transactions 0 Общее количество повторов транзакций подчиненным потоком репликации с момента запуска.
Slave_running OFF Присваивается значение ON, если данный сервер функционирует как подчиненный, подключенный к главному.
Сортировка
Переменная Значение Описание
Sort_merge_passes 0 Количество проходов, сделанных алгоритмом сортировки. При большом значении следует увеличить значение переменной sort_buffer_size.
Sort_range 20 k Количество операций сортировки, выполненных с использованием диапазона.
Sort_rows 1,290 k Количество отсортированных строк.
Sort_scan 14 k Количество операций сортировки, выполненных с использованием полного сканирования таблицы.
Таблицы
Переменная Значение Описание
Open_tables 911 Количество открытых таблиц.
Opened_tables 3,415 Общее количество открывавшихся таблиц. При большом значении переменной рекомендуется увеличить размер кеша таблиц (table_cache).
Table_locks_immediate 2,829 k Количество запросов на блокировку таблицы, которые были удовлетворены немедленно.
Table_locks_waited 3 Количество запросов на блокировку таблицы, которые были удовлетворены только после определенного периода ожидания. Если значение велико и есть проблемы с производительностью, необходимо сначала оптимизировать свои запросы, а затем разбить свою таблицу (или таблицы) или использовать репликацию.
Координатор транзакций
Переменная Значение Описание
Tc_log_max_pages_used 0
Tc_log_page_size 0
Tc_log_page_waits 0
Переменная Значение Описание
Compression OFF
Open_files 156 Количество открытых файлов.
Open_streams 0 Количество открытых потоков (применяется к файлам журналов). Потоком называется файл, открытый с помощью функции fopen().
Open_table_definitions 785
Opened_files 3,987
Opened_table_definitions 1,991
Prepared_stmt_count 0
Queries 1,566 k
Uptime_since_flush_status 0 дней, 23 часов, 25 минут и 22 секунд
Не понравились значения:
Handler_read_rnd 193 k Количество запросов, на чтение строки, основанных на ее позиции. Большое значение переменной может быть обусловлено частым выполнением запросов использующих сортировку результата, выполнением большого числа запросов требующих полного сканирования таблиц, наличием объединений не использующих индексы надлежащим образом.
Handler_read_rnd_next 5,743 k Количество запросов на чтение следующей строки из файла данных. Данное значение будет высоким, при частом сканировании таблиц. Обычно это означает, что таблицы не проиндексированы надлежащим образом или запросы не используют преимущества индексов.
Created_tmp_disk_tables 187 Количество временных таблиц, автоматически созданных сервером на диске, во время выполнения SQL-выражений. Если значение Created_tmp_disk_tables велико, следует увеличить значение переменной tmp_table_size, чтобы временные таблицы располагались в памяти, а не на жестком диске.
Key_writes 771 k Количество физических операций записи блока индексов на диск.
Opened_tables 3,415 Общее количество открывавшихся таблиц. При большом значении переменной рекомендуется увеличить размер кеша таблиц (table_cache).
Судя из написанного - что то с индексами таблиц. Запустил mysqlcheck -o --all-databases; сделал "Исправление уникальных индексов" средствами vB. Результата не дало.
Что можно еще сделать в данной ситуации? Почему сервер БД не использует больше системных ресурсов? Что делать с индексами?
И напоследок, прошу не советовать нанять администратора для настроек, ведь надо же самому как-то учиться и с чего то начинать. Приглашаю всех энтузиастов и профессионалов, и всех кому вобще интересны узкие места в производительности форума, помочь разобраться в данной проблеме.
Судя из написанного - что то с индексами таблиц. Запустил mysqlcheck -o --all-databases; сделал "Исправление уникальных индексов" средствами vB. Результата не дало.
Что можно еще сделать в данной ситуации? Почему сервер БД не использует больше системных ресурсов? Что делать с индексами?
интересный вопрос...
для начала, хорошо бы выяснить, что с ними нЕ так
варианты:
- Индексы могут отсутствовать. В этом случае штатная операция по исправлению из админки вполне успешно справляется с проблемой
- Индексы могут быть "повреждены". В этом случае, аналогично первому, штатно вобла справляется
- Индексы могут быть "заблокированы". Такое почему-то частенько возникает при переносе на другой сервер.
Как проверить?
ПМА, открыть любую проблемную/подозрительную таблицу, у Вас в первую очередь смотреть надо таблицы пост и тред - структура, и смотрим внизу, где индексы, в пункте "комментарий" - а не указано ли там disabled?
если да (выключены/заблокированы индексы) -
решение: выполняем запрос
ALTER TABLE 'имя_таблицы' ENABLE KEYS
других проблем с индексами что-то не могу вспомнить...
@anemak
Простоузер
Join Date: Jun 2011
Posts: 9
Версия vB: 4.2.х
Reputation:
Novice 5
Репутация в разделе: 5
0
Штатную проверку запускал, об этом уже упоминалось.
Вот к примеру индексы одного из форумов, таблица post:
Code:
Действие Имя индекса Тип Уникальный Упакован Поле Уникальных элементов Сравнение Null Комментарий
PRIMARY BTREE Да Нет postid 2335662 A
userid BTREE Нет Нет userid 467132 A
threadid BTREE Нет Нет threadid 467132 A
userid 2335662 A
threadid_visible_dateline BTREE Нет Нет threadid 333666 A
visible 333666 A
dateline 2335662 A
userid 2335662 A
postid 2335662 A
dateline BTREE Нет Нет dateline 2335662 A
ipaddress BTREE Нет Нет ipaddress 356243 A
user_date BTREE Нет Нет userid 467132 A
dateline 2335662 A
Code:
Используемое пространство
Тип Использование
Данные 444.9 МБ
Индекс 371.8 МБ
Всего 816.8 МБ
Статистика строк
Характеристика Значение
Формат Compact
Сравнение cp1251_general_ci
Следующий Autoindex 2,065,531
Создание Май 03 2013 г., 12:23
Luvilla
Гость
Posts: n/a
Quote:
Originally Posted by anemak
Штатную проверку запускал, об этом уже упоминалось.
да, я прочла
поэтому и написала, что штатно вобла справляется - в смысле, что если проблема была с этим, то после проведения обслуживания проблема должна исчезнуть
Quote:
Originally Posted by anemak
Вот к примеру индексы
лучше б скрином) читать тяжело
некоторые двоятся...
а userid - так вообще трижды, причём два раза - какие-то обломки... нет?
скрин, голая 4.2
@anemak
Простоузер
Join Date: Jun 2011
Posts: 9
Версия vB: 4.2.х
Reputation:
Novice 5
Репутация в разделе: 5
0
Это с 5 столбика сместились userid, скрином и правда понятнее ...
Luvilla
Гость
Posts: n/a
на вид - всё нормально и соответствует штатной структуре таблицы
@mindframe
Специалист
Join Date: Nov 2010
Posts: 471
Версия vB: 3.8.x
Пол:
Reputation:
Professional 318
Репутация в разделе: 20
0
mysqltuner попробуйте, я сейчас особо конфиги не читал, но тоже есть сомнения в их оптимальности. http://habrahabr.ru/post/108418/
Как базовый пример подойдёт.
Я лично на своих серверах давно уже отказался от апача в пользу fpm, всё работает стабильно, брат жив.
В скором времени планирую переезд на MariaDB, а насчёт InnoDB вы правы, но не поголовно надо все таблицы конвертить.
>> MySQLTuner 1.0.1 - Major Hayden <major@mhtx.net>
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with '--help' for additional options and output filtering
-------- General Statistics --------------------------------------------------
[[0;34m--[0m] Skipped version check for MySQLTuner script
[[0;32mOK[0m] Currently running supported MySQL version 5.1.66-0+squeeze1-log
[[0;32mOK[0m] Operating on 64-bit architecture
-------- Storage Engine Statistics -------------------------------------------
[[0;34m--[0m] Status: [0;31m-Archive [0m[0;31m-BDB [0m[0;31m-Federated [0m[0;32m+InnoDB [0m[0;31m-ISAM [0m[0;31m-NDBCluster [0m
[[0;34m--[0m] Data in MyISAM tables: 15M (Tables: 48)
[[0;34m--[0m] Data in InnoDB tables: 1G (Tables: 708)
[[0;34m--[0m] Data in MEMORY tables: 11M (Tables: 6)
[[0;31m!![0m] Total fragmented tables: 709
-------- Performance Metrics -------------------------------------------------
[[0;34m--[0m] Up for: 1d 3h 7m 10s (1M q [16.703 qps], 18K conn, TX: 17B, RX: 527M)
[[0;34m--[0m] Reads / Writes: 65% / 35%
[[0;34m--[0m] Total buffers: 20.1G global + 2.0G per thread (151 max threads)
[[0;31m!![0m] Maximum possible memory usage: 323.7G (1037% of installed RAM)
[[0;32mOK[0m] Slow queries: 0% (3/1M)
[[0;32mOK[0m] Highest usage of available connections: 4% (7/151)
[[0;32mOK[0m] Key buffer size / total MyISAM indexes: 2.0G/14.0M
[[0;32mOK[0m] Key buffer hit rate: 99.9% (3M cached / 2K reads)
[[0;31m!![0m] Query cache efficiency: 2.1% (20K cached / 1M selects)
[[0;32mOK[0m] Query cache prunes per day: 0
[[0;32mOK[0m] Sorts requiring temporary tables: 0% (0 temp sorts / 38K sorts)
[[0;32mOK[0m] Temporary tables created on disk: 0% (1K on disk / 287K total)
[[0;32mOK[0m] Thread cache hit rate: 99% (7 created / 18K connections)
[[0;32mOK[0m] Table cache hit rate: 38% (1K open / 4K opened)
[[0;32mOK[0m] Open file limit used: 1% (188/16K)
[[0;32mOK[0m] Table locks acquired immediately: 99% (2M immediate / 2M locks)
[[0;32mOK[0m] InnoDB data size / buffer pool: 1.2G/16.0G
-------- Recommendations -----------------------------------------------------
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
Reduce your overall MySQL memory footprint for system stability
Variables to adjust:
*** MySQL's maximum memory usage is dangerously high ***
*** Add RAM before increasing MySQL buffer variables ***
query_cache_limit (> 512M, or use smaller result sets)
тут все гуд вроде, ругается на некоторые завышенные параметры (при 150 одновременных коннектах, будет потребляться 300Гб памяти), это нормально, я их преднамеренно завысил на некоторое время ...
Смущает почему пишет "Total fragmented tables: 709" ведь все они оптимизировались, и должны быть дефрагментированы. с "Query cache efficiency: 2.1% (20K cached / 1M selects)" тоже не понятно, сколько бы парамерт не увеличивал, ничего не меняется.
Насчет InnoDb - я сменил движки таблиц согласно структуре которую предполагали разработчики. Показалось странным что одна из баз была на MyISAM, возможно это появилось в какой то версии vB
Code:
....
if ($memory)
{ // Use Memory if possible, and allowed
return 'MEMORY';
}
else if ($innodb)
{ // Otherise try Innodb
return 'InnoDB';
}
return 'MyISAM'; // Otherwise default to MyISAM.
}
// Choose Engine for Session Tables.
function get_session_engine($db)
{
return get_engine($db, true);
}
// Determines which mysql engine to use for high concurrency tables
// Will use InnoDB if its available, otherwise MyISAM
....
Luvilla
Гость
Posts: n/a
Quote:
Originally Posted by anemak
Насчет InnoDb - я сменил движки таблиц согласно структуре которую предполагали разработчики.
разработчиками чего? Майсиквела?
у воблы (конкретно 4.2) строгое указание таблиц есть для таблиц поиска, searchcore_text и searchgroup_text, и это как раз MyISAM
ну и таблицы сессий - отдельно указываются
остальные таблицы создаются, как скажет майсиквел, для новых это InnoDB
Quote:
Originally Posted by anemak
Смущает почему пишет "Total fragmented tables: 709"
это суммарно для трёх форумов, надо понимать...
то есть, фрагментирована практически каждая таблица
а что показывается в ПМА, в колонке "фрагментировано"?
===
по поводу InnoDB вообще вопрос спорный...
если таблица "крашится", то MyISAM чинится относительно без проблем, при каких-то фатальных сбоях таблицу можно вытащить
если колом встанет InnoDB - с ней никак, только из бэкапа вынимать (имею зубодробильный опыт восстановления одного форума, когда таблицы пришлось собирать буквально по кускам... сейчас этот форум работает, таблицы в MyISAM, проблем не наблюдается)
спорный же и вопрос относительно производительности.. есть мнение, что MyISAM на чтение работает быстрее, чем InnoDB
@mindframe
Специалист
Join Date: Nov 2010
Posts: 471
Версия vB: 3.8.x
Пол:
Reputation:
Professional 318
Репутация в разделе: 20
1
Quote:
Originally Posted by Luvilla
порный же и вопрос относительно производительности.. есть мнение, что MyISAM на чтение работает быстрее, чем InnoDB
InnoDB просто требуют более детальной настройки, при грамотном подходе они дают больший профит.
Можно вообще избавиться от myisam в бд, но для этого надо прикрутить сторонний поиск, рекомендую sphinx от digitalpoint, использую на двух форумах, результаты и правда впечатляют.