Задавайте вопросы, мы ответим
Вы не зашли.
Стоял настроенный "более-менее" сервер чуть более полу года. SELECT запросы летали в прямом смысле. Средняя скорость самых частых запросов типа:
key_buffer_size = 204M
query_cache_size = 1M
query_cache_min_res_unit = 3800
query_cache_limit = 64M
query_cache_type = OFF
max_heap_table_size = 30M
tmp_table_size = 30M
max_connections = 200
thread_cache_size = 100
read_buffer_size = 256K
read_rnd_buffer_size = 3M
join_buffer_size = 16M
sort_buffer_size = 800K
myisam_sort_buffer_size = 128M
table_open_cache = 270
Результат MySQLTuner:
[!!] Maximum reached memory usage: 2.1G (218.11% of installed RAM)
[!!] Maximum possible memory usage: 4.2G (428.94% of installed RAM)
[!!] Overall possible memory usage with other process exceeded memory
[!!] Slow queries: 7% (52K/667K)
[OK] Highest usage of available connections: 48% (96/200)
[OK] Aborted connections: 0.00% (0/86540)
[!!] Query cache may be disabled by default due to mutex contention.
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 46K sorts)
[OK] No joins without indexes
[OK] Temporary tables created on disk: 9% (56 on disk / 606 total)
[OK] Table cache hit rate: 51% (270 open / 522 opened)
[OK] Open file limit used: 44% (452/1K)
[OK] Table locks acquired immediately: 99% (209K immediate / 211K locks)
-------- ThreadPool Metrics ------------------------------------------------------------------------
[--] ThreadPool stat is disabled.
-------- Performance schema ------------------------------------------------------------------------
[--] Performance schema is disabled.
-------- MyISAM Metrics ----------------------------------------------------------------------------
[!!] Key buffer used: 20.4% (43M used / 213M cache)
[OK] Key buffer size / total MyISAM indexes: 204.0M/22.3M
[OK] Read Key buffer hit rate: 99.8% (1M cached / 3K reads)
[!!] Write Key buffer hit rate: 16.2% (44K cached / 37K writes)
(Накрутил RAM больше чем нужно , производительность слегка увеличилась и то только для запросов id которых от 0 до 1000, но это все-равно не то, что я хотел.)
Отредактированно kingkobra97 (08.12.2016 22:15:57)
Неактивен
покажите:
show create table `имя таблицы`;
explain select ...;
и профайлинг запроса http://webew.ru/articles/2732.webew
Неактивен
vasya написал:
покажите:
show create table `имя таблицы`;
explain select ...;
и профайлинг запроса http://webew.ru/articles/2732.webew
+--------------------------------+----------+
| Status | Duration |
+--------------------------------+----------+
| starting | 0.000047 |
| Waiting for query cache lock | 0.000004 |
| checking query cache for query | 0.000086 |
| checking permissions | 0.000007 |
| Opening tables | 0.000027 |
| System lock | 0.000010 |
| Waiting for query cache lock | 0.000035 |
| init | 0.000052 |
| optimizing | 0.000015 |
| statistics | 0.071843 |
| preparing | 0.000028 |
| executing | 0.000004 |
| Sending data | 0.000087 |
| end | 0.000010 |
| query end | 0.000003 |
| closing tables | 0.000011 |
| freeing items | 0.000010 |
| Waiting for query cache lock | 0.000004 |
| freeing items | 0.000033 |
| Waiting for query cache lock | 0.000003 |
| freeing items | 0.000001 |
| storing result in query cache | 0.000003 |
| logging slow query | 0.000002 |
| cleaning up | 0.000003 |
+--------------------------------+----------+
Отредактированно kingkobra97 (08.12.2016 23:31:48)
Неактивен
это профайлинг запроса (select..) или плана запроса (explain select..)?
Неактивен
vasya написал:
это профайлинг запроса (select..) или плана запроса (explain select..)?
это (select..), а нужен и (explain select..)?
Неактивен
нужен профайлинг для select, но в показанном я не вижу выполнение более 0.5 сек, поэтому и уточнил
Неактивен
можно попробовать:
ANALYZE TABLE `имя таблицы`;
пересоздать таблицу
проверить диск на ошибки
Неактивен
Тот запрос выполнялся 0.07, что уже очень много. Должен как минимум 0.007.
Вот более тяжелый запрос. Оптимизировать тут нечего. Раньше он просто летал.
Отредактированно kingkobra97 (09.12.2016 00:14:27)
Неактивен
Как проверить диск на ошибки? Я больше склоняюсь к диску потому, что запросы выполняются хаотично. То быстро, то медленно. Кэша естественно нет поэтому это не из-за него. Сколько бы я не крутил my.cnf не могу найти золотую середину. В день когда началось все это, по логам я увидел подобное.
161201 14:23:11 [ERROR] /usr/sbin/mysqld: Table './db/all_visits' is marked as crashed and should be repaired
Через некоторое время
161201 14:23:12 [ERROR] /usr/sbin/mysqld: Incorrect key file for table './db/users.MYI'; try to repair it
И ошибка под ним же
161201 14:31:11 [ERROR] Got an error from thread_id=4837, /build/mysql-5.5-8EvVme/mysql-5.5-5.5.52/storage/myisam/mi_update.c:226
После я восстановил таблицу all_visits, но что-то снова пошло не так
161202 21:39:51 [ERROR] /usr/sbin/mysqld: Incorrect key file for table './db/all_visits.MYI'; try to repair it
Через час сломались мои самые большие таблицы
161202 22:55:57 [ERROR] /usr/sbin/mysqld: Table './db/all_visits' is marked as crashed and should be repaired
161202 22:55:57 [ERROR] /usr/sbin/mysqld: Table './db/table' is marked as crashed and should be repaired
Очень странное поведение.
Отредактированно kingkobra97 (09.12.2016 00:25:24)
Неактивен
в первом 0.07 это сервер выбирал какой индекс использовать
во втором 1.57 - сортировка 10 строк
весьма странное поведение
по диску: утилита, которая читает смарт; что показывает iostat; вопрос хостеру.
Неактивен
vasya написал:
в первом 0.07 это сервер выбирал какой индекс использовать
во втором 1.57 - сортировка 10 строк
весьма странное поведение
по диску: утилита, которая читает смарт; что показывает iostat; вопрос хостеру.
smart не знаю если верен, провайдер многое потер.
Также лог iostat сделал в течении 10 секунд.
Неактивен
см колонку WHEN_FAILED
диск умер
Неактивен
vasya написал:
см колонку WHEN_FAILED
диск умер
Благодарю за помощь. Провайдер перенес на другой физический сервер. Все стало работать как и раньше.
Неактивен