The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"mysql не успевает обработать запросы"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"mysql не успевает обработать запросы"  
Сообщение от Andy (??) on 21-Фев-07, 13:05 
Добрый день, уважаемые!

Испытываю затруднения с работой MySQL 4.1.22-log.
Сервер 2 * Xeon 3,2 ГГц, 2 Гб памяти.
Около 40 запросов в секунду, пики до 100.

Происходит "зависание" запросов, с последующим исчерпанием max_connections (=100) и отказом в обслуживании.

Переменные сервера по памяти:
key_buffer = 256M (пробовал до 512)
sort_buffer_size = 1M (пробовал до 2)
read_buffer_size = 1M (пробовал до 2)

В slow-query.log очень много запросов (форума) следующего вида:

select ... i.name, c.name, t.subject, t.username, date_format(t.orderdate,'%Y%m%d%H%i%s') ... from forum_topic as t, forum_index as i, city as c where t.deleted='0' and t.orderdate>date_sub(now(),interval 14 day) and t.idc=c.id and i.id=t.idi order by t.orderdate desc;

Объединяются таблицы forum_index (разделы форума), forum_topics (темы форума), city (города) с последующей сортировкой по полю orderdate (timestamp).

Количество записей:
forum_index = 42
forum_topics = 107000
city = 5

Индексы:
в forum_topic индекс idi_deleted по двум полям idi и deleted

Исходя из этого есть предположения как можно оптимизировать запрос или таблицы? Очень надеюсь на вашу помощь.

Если данных мало - скажите.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "mysql не успевает обработать запросы"  
Сообщение от obl (ok) on 21-Фев-07, 13:56 
>Добрый день, уважаемые!
>
>Испытываю затруднения с работой MySQL 4.1.22-log.
>Сервер 2 * Xeon 3,2 ГГц, 2 Гб памяти.
>Около 40 запросов в секунду, пики до 100.
>
>Происходит "зависание" запросов, с последующим исчерпанием max_connections (=100) и отказом в обслуживании.
>
>
>Переменные сервера по памяти:
>key_buffer = 256M (пробовал до 512)
>sort_buffer_size = 1M (пробовал до 2)
>read_buffer_size = 1M (пробовал до 2)
>
>В slow-query.log очень много запросов (форума) следующего вида:
>
>select ... i.name, c.name, t.subject, t.username, date_format(t.orderdate,'%Y%m%d%H%i%s') ... from forum_topic as t, forum_index as i, city as c where t.deleted='0' and t.orderdate>date_sub(now(),interval 14 day) and t.idc=c.id and i.id=t.idi order by t.orderdate desc;
>
>Объединяются таблицы forum_index (разделы форума), forum_topics (темы форума), city (города) с последующей
>сортировкой по полю orderdate (timestamp).
>
>Количество записей:
>forum_index = 42
>forum_topics = 107000
>city = 5
>
>Индексы:
>в forum_topic индекс idi_deleted по двум полям idi и deleted
>
>Исходя из этого есть предположения как можно оптимизировать запрос или таблицы? Очень
>надеюсь на вашу помощь.
>
>Если данных мало - скажите.

два гига памяти, а ты всего 256 юзаешь :)
на буферы побольше отведи, на хранение индексов тоже
оптимизируй ядро под мускуль,рарреши зать больше гига памяти одному процессу, ну и тд...

давай конфиг my.cnf, что за операционка у тебя? :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "mysql не успевает обработать запросы"  
Сообщение от Andy (??) on 27-Фев-07, 11:52 
FreeBSD 4.11

Добавил буферов.

Конфиг такой:

[mysqld]
set-variable=max_heap_table_size=48M
set-variable=tmp_table_size=80M
set-variable=wait_timeout=600
port            = 3306
socket          = /tmp/mysql.sock
datadir = /db/mysql
skip-locking
default-character-set = cp1251
character-set-server = cp1251
key_buffer = 512M
max_allowed_packet = 1M
max_connections = 70
back_log = 30
table_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "mysql не успевает обработать запросы"  
Сообщение от Andy (??) on 05-Мрт-07, 12:50 
Больше никто не может ничего сказать? Где прибавить, где убавить?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "mysql не успевает обработать запросы"  
Сообщение от obl (ok) on 10-Мрт-07, 03:58 
>Больше никто не может ничего сказать? Где прибавить, где убавить?

sort_buffer_size = 2M
прибавляй пару нулей

key_buffer = 512M
увеличивай до полутора гигов (проверь только чтоб ядро разрешало юзать такой объем памяти одному процессу)

max_connections = 70
тут лучше сделать около 200, чтобы с запасом... перезапустишь апач рестартом - коннекты незакрытые останутся, будет ошибка - лимит закончен


myisam_sort_buffer_size = 64M
тут раза в 4 больше

thread_cache_size = 8
а ето считается как количество процессоров * на два
на самом деле просто поиграйся с параметром - тулка будет больше... тюнинг всетаки )

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "mysql не успевает обработать запросы"  
Сообщение от Andy (??) on 16-Мрт-07, 08:42 
Сейчас установлен лимит на процесс 1,5 гига.

Как я понимаю mysql выделяет sort_buffer_size и read_buffer_size для каждого соединения, получается если эти буфферы будут 200 метров, на 200 коннекций = 40 гиг.

Ты ничего не путаешь?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру