URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 89022
[ Назад ]

Исходное сообщение
"Mysql - запросы тормозят."

Отправлено Rayon , 30-Май-10 05:36 
Решил создать тему именно тут, т.к. это врятли проблема в настройке mysql-сервера.
Так вот. Стоит игровой сервер, естественно в базу идет множество запросов, в следствие чего она тупит. Для проверки была накидана прожка на java, которая многопоточно обновляла данные в таблице, результат удивил.. На сервере с 24гб оперативной памяти, 16 ядерным процессором и 2 жесткими дисками в RAID'e, запросы выполнялись медленнее чем на хиленьком компьютере с windows(!). Версии mysql - одинаковые, конфиг - одинаковый, база - одинаковая.

Вот результат работы программы на винде:
Time passed: ....... 191268 ms
Total updates: ..... 2732320
Slow updates: ...... 0
Slowest update: .... 16 ms

Как видно, 2,732,320 запросов, и самый долгий апдейт был 16мс. Программа работала в 30 потоков, 50 соединений к базе.

Вот результат с debian-сервера:
Time passed: ....... 34101 ms
Total updates: ..... 46894
Slow updates: ...... 612
Slowest update: .... 2716 ms

Сделано совсем чуть-чуть запросов, а уже так "ужасно".
"Slowest update" - это те, которые дольше 500мс, настройки программы такие же, как и на винде. Вот сам конфиг mysql:

[client]
socket = /var/run/mysqld/mysqld.sock

port = 3306

default-character-set = utf8

[mysqld]
user = mysql
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
pid-file = /var/run/mysqld/mysqld.pid
port = 3306

query_cache_size=0

table_cache=1024
thread_cache_size=16
thread_concurrency=8

#*** MyISAM Specific options
default_table_type=MYISAM
default-storage-engine=MyISAM

max_heap_table_size=256M
myisam_max_sort_file_size=10G
myisam_sort_buffer_size=128M
key_buffer_size=1G
read_buffer_size=64K
read_rnd_buffer_size=1M
sort_buffer_size=256K
join_buffer_size=512K

max_allowed_packet=64M

max_connections=500
max_user_connections=500
max_connect_errors=100

max_tmp_tables=2048000
tmp_table_size=256M

skip-external-locking

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

#slow_query_log
#slow_query_log_file = /var/lib/mysql/slow_query.log
long_query_time = 3
#log_short_format
#log-queries-not-using-indexes

# ***  Replication related settings

server-id = 1

# Automatically check and repair not properly closed MyISAM tables.
myisam_recover
myisam_repair_threads = 1

character-set-server = utf8
collation-server = utf8_general_ci

# *** BDB Specific options ***
#skip-bdb

# *** INNODB Specific options ***
skip-innodb

[mysqldump]
socket = /var/run/mysqld/mysqld.sock
default-character-set = utf8
quick
max_allowed_packet = 64M

[mysql]
no-auto-rehash
default-character-set = utf8
max_allowed_packet = 64M

[isamchk]
key_buffer = 512M
sort_buffer_size = 512M
read_buffer = 32M
write_buffer = 32M

[myisamchk]
key_buffer = 512M
sort_buffer_size = 512M
read_buffer = 32M
write_buffer = 32M

[mysqlhotcopy]
interactive-timeout

[mysqld_safe]
log-error = /var/log/mysql.log
socket = /var/run/mysqld/mysqld.sock
open-files-limit = 8192

[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin

Версия mysql - 5.1.47
Ядро на дебиане - 2.6.26-2-amd64
База и там и там - MyISAM
Данных в таблице, по которой идет апдейт - примерно 1,600,000
Глобальные переменные и там и там одинаковые

Еще одна интересная вещь в том, что любом unix-сервере моем, эта программа выдавало плачевный результат, а на долбаной винде - нормально, как так? подскажите, где копать, уж крайне не хочется на винду перелазить. Может какая проблема в java mysql-коннекторе или еще чего. Заранее благодарю за ответы.


Содержание

Сообщения в этом обсуждении
"Mysql - запросы тормозят."
Отправлено pavlinux , 31-Май-10 01:21 
> Для проверки была накидана прожка на java

Так давай исходники, параметры компиляции и запуска...

>16 ядерным процессором

Ух ты, работаешь в лаборатории AMD?

> Заранее благодарю за ответы.

На здоровье...


В общем, может быть всё что угодно,
... nosmp в загрузчике, неправильная строка запуска MySQL,
корявый fstab для ext3/4, кривой конфиг RAID, кривые sysctl,
фаервол корявый, коряво скомпилили MySQL, или ВСЁ ВМЕСТЕ или ПО ОЧЕРЕДИ. :)


1. Сделать бенчмарки HDD (iozone, bonnie++)
2. Сделать бенчмарки CPU (Einstein@Home)
3. Сделать бенчмарки RAM (STREAM http://www.cs.virginia.edu/stream/)
4. Сделать бенчмарки SMP  (NPB-NAS Parallel Benchmarks https://www.nas.nasa.gov/cgi-bin/software/start)
5. Всеми любимые Phoronix Test Suite  (http://www.phoronix-test-suite.com/)
6. Сделать бенчмарки  MySQL которые в исходниках MySQL
7. Сделать Java benchmark ( http://sourceforge.net/projects/opt)

Вот после того, как по всем бенчмаркам усрёшь венду, хотя бы на 15%, тогда и пиши, что плохой MySQL



"Mysql - запросы тормозят."
Отправлено Rayon , 19-Июн-10 09:13 
>[оверквотинг удален]
>1. Сделать бенчмарки HDD (iozone, bonnie++)
>2. Сделать бенчмарки CPU (Einstein@Home)
>3. Сделать бенчмарки RAM (STREAM http://www.cs.virginia.edu/stream/)
>4. Сделать бенчмарки SMP  (NPB-NAS Parallel Benchmarks https://www.nas.nasa.gov/cgi-bin/software/start)
>5. Всеми любимые Phoronix Test Suite  (http://www.phoronix-test-suite.com/)
>6. Сделать бенчмарки  MySQL которые в исходниках MySQL
>7. Сделать Java benchmark ( http://sourceforge.net/projects/opt)
>
>Вот после того, как по всем бенчмаркам усрёшь венду, хотя бы на
>15%, тогда и пиши, что плохой MySQL

Исходники, естественно, дать не смогу, слишком дорого они мне обошлись.
Параметры запуска:
java -server -Dfile.encoding=UTF-8 \
             -Xms4G -Xmx16G \
             -XX:+HeapDumpOnOutOfMemoryError \
             -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:ParallelGCThreads=4 -XX:PermSize=128m -XX:NewSize=256m -XX:MaxNewSize=512m \
             -Xnoclassgc \
             -XX:+DisableExplicitGC \
             -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -Xloggc:log/gc.log \
             -XX:+AggressiveOpts \
             -XX:+UseBiasedLocking \
             -cp блаблаблаблабла > log/stdout.log 2>&1

Извиняюсь, процессор 12 ядер, очепятался. Но не суть важно. Он никогда не нагружен более чем 10-15%.

Причем тут "плохой" mysql? Я сказал лишь, что запросы тормозят, а плохой он или добрый это другая тема. Когда DELETE одной строки занимает почти секунду, знаете ли, начинает немного раздражать :).
Ах да, на "ты" мы с вами еще не переходили. Я не то что бы придераюсь, но все же.

Купил себе вчера 2 винта SSD по 128гб в RAID 1, перенес на них базу, симлинк сделал, никакой прибавки скорости я не увидел, вообще.
Причем тут фаерволл? iptables с пустыми правилами глючит? :))
Строки запуска никто не менял, как в дебиане по дефолту - так и есть.
memlock мне тоже ничем не помог.
MySQL ставился из репозитариев дебиана.
По поводу RAID - врятли, ибо даже после переноса базы на SSD толку нет.

Еще варианты?


"Mysql - запросы тормозят."
Отправлено pavlinux , 19-Июн-10 12:49 
>>[оверквотинг удален]
>Еще варианты?

Дальше платно. :)



"Mysql - запросы тормозят."
Отправлено Rayon , 19-Июн-10 12:50 
>>>[оверквотинг удален]
>>Еще варианты?
>
>Дальше платно. :)

все это конечно отлично, но форум для помощи, свои услуги предлагайте где-нибудь на веблансере.


"Mysql - запросы тормозят."
Отправлено pavlinux , 19-Июн-10 12:57 
>>>>[оверквотинг удален]
>>>Еще варианты?
>>Дальше платно. :)
>все это конечно отлично, но форум для помощи,

Угу.


"Mysql - запросы тормозят."
Отправлено bill , 19-Июн-10 16:37 
>[оверквотинг удален]
>вообще.
>Причем тут фаерволл? iptables с пустыми правилами глючит? :))
>Строки запуска никто не менял, как в дебиане по дефолту - так
>и есть.
>memlock мне тоже ничем не помог.
>MySQL ставился из репозитариев дебиана.
>По поводу RAID - врятли, ибо даже после переноса базы на SSD
>толку нет.
>
>Еще варианты?

Купите ещё что-нибудь.
Тесты сделаны? Как замена винтов может соотноситься с выводом о корректной работе рэйд? Софт-рэйд? Фейк-рэйд?


"Mysql - запросы тормозят."
Отправлено SubGun , 23-Июн-10 11:30 
>[оверквотинг удален]
>>memlock мне тоже ничем не помог.
>>MySQL ставился из репозитариев дебиана.
>>По поводу RAID - врятли, ибо даже после переноса базы на SSD
>>толку нет.
>>
>>Еще варианты?
>
>Купите ещё что-нибудь.
>Тесты сделаны? Как замена винтов может соотноситься с выводом о корректной работе
>рэйд? Софт-рэйд? Фейк-рэйд?

А как рэйд соотносится с работой  MySQL? С файловыми операциями-то у него все нормально.


"Mysql - запросы тормозят."
Отправлено SubGun , 23-Июн-10 11:39 
>Еще варианты?

Отличается ли время выполнения запросов напрямую через mysql shell и через java-коннектор? Вы не указали как получили свой результат.


"Mysql - запросы тормозят."
Отправлено LSTemp , 13-Июл-10 03:23 

>В общем, может быть всё что угодно,
>... nosmp в загрузчике, неправильная строка запуска MySQL,
>корявый fstab для ext3/4, кривой конфиг RAID, кривые sysctl,
>фаервол корявый, коряво скомпилили MySQL, или ВСЁ ВМЕСТЕ или ПО ОЧЕРЕДИ. :)

мая плакать...


"Mysql - запросы тормозят."
Отправлено pavlinux , 13-Июл-10 12:00 
>
>>В общем, может быть всё что угодно,
>>... nosmp в загрузчике, неправильная строка запуска MySQL,
>>корявый fstab для ext3/4, кривой конфиг RAID, кривые sysctl,
>>фаервол корявый, коряво скомпилили MySQL, или ВСЁ ВМЕСТЕ или ПО ОЧЕРЕДИ. :)
>
>мая плакать...

Не, твоя пиздить и не чего не аргументировать, и тем более не предложить своего решения проблемы.


"Mysql - запросы тормозят."
Отправлено LSTemp , 13-Июл-10 03:19 
а вопрос собственно в чем?