1. Соблюдайте Правила форума и проявляйте уважение к другим участникам беседы.

Медленные запросы MySQl

Тема в разделе 'Запуск и Поддержка', создана пользователем GrayTroll, 17 сен 2011.

  1. GrayTroll Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    У меня сервер стоит в датацентре 6 ядер 24 гига оперативы - система ArchLinux.

    Перерывал код dotaopenstats. Находил места где в условиях неправильно обрабатывались ключи(а точнее вообще не обрабатывались как ключи) и некоторые запросы вместо 25 секунд стали выполняться 0.25 сек.
    Но сейчас начались чудеса страница пользователя иногда загружается за 7 секунд, как и должно, а иногда за 150 секунд(это не кешированная версия).
    В логах медленных запросах часто фигурирует один только на 5 секунд с подсчетом очков, а остальные не больше 1 секунды.
    Размер базы 35 тысяч игроков.

    Смотрел статус базы когда делал запросы к странице пользователей, он начинает копировать данные во временную таблицу в память, а потом на диск и в итоге это идет 150 секунд и грузит 300-400% процессоров(хотя мускул обычно загружен на 2-3%).

    Я думаю что нужно поменять какой-то конфиг в мускуле, но не знаю какой - вроде все ок:
    Код:
    max_connections = 1000
    init_connect='SET collation_connection = utf8_general_ci'
    init_connect='SET NAMES utf8'
    character-set-server = 'utf8'
    collation-server = 'utf8_general_ci'
    #skip-character-set-client-handshake
    port		= 3306
    socket		= /var/run/mysqld/mysqld.sock
    datadir		= /var/lib/mysql
    skip-external-locking
    key_buffer_size = 500M
    max_allowed_packet = 1M
    table_open_cache = 512
    
    net_buffer_length = 8K
    read_buffer_size = 256K
    myisam_sort_buffer_size = 8M
    query_cache_size = 16m
    sort_buffer_size = 1m
    read_rnd_buffer_size = 1m
    join_buffer_size = 500m
    thread_cache_size = 8m
    То есть по логам запросы быстрые, но может быть буфера не хватает чтобы их хранить?
    Читал это http://habrahabr.ru/blogs/mysql/108418/ , но мне не помогло, может что-то не заметил?

    Да как в этой теме писали: http://forums.w3gh.ru/dota-open-sta...nic-statistiki-acki-gruzit-proc-t1799-30.html , при 3к пользователях у меня ок было, но у меня база на 1 порядок больше. Думаю дело в буферах
  2. ViperNight ▒▒▒▒▒▒▒▒▒

    Сообщения:
    311
    Спасибы:
    154
    Сборка бота GHost:
    GHost++ r597M
    Дата начала использования бота:
    20.01.2007
    Skype:
    Мой статус
    Если поможет: тачка 2 x 3.20GHz 6 core, 72 Gb RAM, ось тоже Arch, база 20k пользователей.
    Конфиг:
    Код:
    [mysqld]
    datadir = /var/lib/mysql
    socket = /tmp/mysql.sock
    
    init_connect = 'SET collation_connection = utf8_general_ci; SET NAMES utf8;'
    character-set-server = utf8
    collation-server = utf8_general_ci
    default-storage-engine = InnoDB
    
    max_connections = 25000
    query_cache_size = 186M
    table_cache = 1520
    tmp_table_size = 67M
    thread_cache_size = 38
    
    myisam_max_sort_file_size = 100G
    myisam_sort_buffer_size = 67M
    key_buffer_size = 290M
    read_buffer_size = 64K
    read_rnd_buffer_size = 256K
    sort_buffer_size = 256K
    
    innodb_additional_mem_pool_size = 12M
    innodb_flush_log_at_trx_commit = 1
    innodb_log_buffer_size = 6M
    innodb_buffer_pool_size = 563M
    innodb_log_file_size = 24M
    innodb_thread_concurrency = 18
    
  3. GrayTroll Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    Не помогло. А игр сколько? У меня 37к. Вроде как проблема с производительностью запросов не только у меня.
  4. ___ROB___ Гуру

    Сообщения:
    256
    Спасибы:
    45
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    1.1.1991
    GrayTroll, ViperNight, можно получить ссылки на ваши творения ? -_-
  5. GrayTroll Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    http://ebashu.dyndns.info/stats
    Это
    Сразу предупреждаю как оно работает. Снаружи нгинкс с максимальным временем работы в 15 секунд, после этого он посылает клиента нафиг, но апач продолжает работать(504 ошибка). В итоге если обновить страницу через 150-200 секунд можно увидеть закешированный результат.
  6. JiLiZART Администрация

    Сообщения:
    815
    Спасибы:
    35
    Сборка бота GHost:
    Ghost++ 17.1
    Дата начала использования бота:
    12.12.04
    ох, мне бы дампик, для тестов ктонить выслал :)
  7. GrayTroll Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
  8. GrayTroll Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    Самое интересное что мускул при запросе не всегда копирует данные во временную таблицу. Когда он этого не делает то все делаеться моментально(за 2-3 секунды)
  9. JiLiZART Администрация

    Сообщения:
    815
    Спасибы:
    35
    Сборка бота GHost:
    Ghost++ 17.1
    Дата начала использования бота:
    12.12.04
    у openstats всё через жопу написано, используй этот скрипт хотябы PDO для работы с базой, то все запросы бы кешировались + сами sql выобрки. А временные таблицы мускул создаёт при офигительно больших вложенных запросах
  10. GrayTroll Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    Похоже из-за запусков запросов отсюда: includes/get_tops.php?alltimestats были проблемы. Отрубил - пока работает нормально
  11. GrayTroll Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    Запросы в sql кешируются(я проверил). Все проблема решилась - на топе внизу был дополнительный запрос который и вырубал базу и думаю у кого-нибудь будет такая же проблема(похожу только в новых версиях опенстата)
  12. ___ROB___ Гуру

    Сообщения:
    256
    Спасибы:
    45
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    1.1.1991
    0.6 sec - 1.1 sec :spy:
  13. GrayTroll Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    У тебя поменьше все же у меня по начало тоже все летало. Но спасибо все равно для сравнения

    http://ebashu.dyndns.info/stats/top.php?gp=1
    Пользователей уже 50 тысяч, запросы снова становятся медленными.(порядка 32х секунд)
    В таблице игроков 750 тысяч записей и складывать по нику игрока все результаты - УЖАСНО медленно.

    Сам подумываю о том что надо это дело как-то переписать или поставить еще одну базу или код который бы пересчитывал таблицу(делать для того чтобы не переписывать бота на си, что ужасно геморно).
    То есть бы к примеру бы брались последние игры и записывались в результирующую таблицу.
  14. GrayTroll Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    Родилась идея, чтобы считать кешь по новому принципу:
    У нас кешь сейчас считается с нуля каждый раз, когда истекает время. Но в принципе если разобраться, то нам не надо каждый раз пересчитывать все с нуля а нужно добавить информацию к кешу которая прошла с последнего обновления.
    Это сэкономит ресурсы на ПОРЯДОК и все будут спасены. Думаю в ближайшее время перепешу систему кеша.
  15. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Дамп всей базы сколько весит?
  16. ____ROB____ Старожила

    Сообщения:
    1.008
    Спасибы:
    22
    Сборка бота GHost:
    Ghost One 1.5
    GrayTroll, ето я поставил твой дамп (который ты бросил в скайп если помнишь).
    Пс: залей новый дамп :spy:
  17. GrayTroll Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    Хмм, может не надо мне использовать последнею версию опен сатсов? У тебя кроме птсов есть какие-нибудь изменения? Я просто иногда виню во всем Майнкрафщиков которые тоже пользуются мускулом, но иногда запросы на создание временных таблиц у меня идут по 6 минут.
    280 мегов
    ebashu.dyndns.info/31102011.zip
  18. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    mysql/data/mysql-slow.log
    Открой, покажи лог, куда входит запрос из top.php.

    PS: В http.conf исправь время тайм-аута.
  19. GrayTroll Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    У меня апач пару минут работает, а у нгинкс 15 секунд поэтому менять таймаут не имеет смысла. Запросы выполняются а затем кешируються(я уже писал об этом). В медленных запросах ничего особого но все равно выложу, чуть позже
  20. ____ROB____ Старожила

    Сообщения:
    1.008
    Спасибы:
    22
    Сборка бота GHost:
    Ghost One 1.5
    GrayTroll, я двой дамп залил на пенёк 4, скрины на первой странице :spy:
    За дамп спасибо.

    пс: ну а вот твой новый дамп, загруженый на п4. :spy: