S125.ru - форумы
Правила форума Помощь Поиск Пользователи Календарь
 
Ответить в данную темуНачать новую тему
Оптимизация MySql, Оптимизация Базы Данных
kradabash
сообщение 23.9.2014, 21:13
Сообщение #1





Группа: Пользователи
Сообщений: 281
Регистрация: 19.1.2014




Всем привет. Кто может помочь оптимизировать базу? Проблема в max_connections = 2200 (дефолт - 200). Буквально через 10 часов падает база (привышает значение max_connections), боты, сайты, в общем всё (IMG:style_emoticons/default/smile.gif) Это при ~150 человек онлайн \ 1.5 гб ОЗУ.

Спрашивал у знакомых, правда на Windows, все настройки базы дефолтные (max_connections = 200), никакой оптимизации не делали, онлайн на ботах 500 + сайты = 1.5 гб озу хватает за глаза на несколько дней.

Не могу понять, почему такая разница между Бубунтой и Виндоу?

Код
#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port      = 3306
socket      = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice      = 0

[mysqld]
#
# * Basic Settings
#
user      = mysql
pid-file   = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port      = 3306
basedir      = /usr
datadir      = /var/lib/mysql
tmpdir      = /tmp
lc-messages-dir   = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address      = 127.0.0.1
#
# * Fine Tuning
#
key_buffer      = 16M
max_allowed_packet   = 16M
thread_stack      = 192K
thread_cache_size       = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover         = BACKUP
max_connections        = 2200
#table_cache            = 64
#thread_concurrency     = 10
#
# * Query Cache Configuration
#
query_cache_limit   = 1M
query_cache_size        = 16M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file        = /var/log/mysql/mysql.log
#general_log             = 1
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# Here you can see queries with especially long duration
#log_slow_queries   = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#       other settings you may need to change.
#server-id      = 1
#log_bin         = /var/log/mysql/mysql-bin.log
expire_logs_days   = 10
max_binlog_size         = 100M
#binlog_do_db      = include_database_name
#binlog_ignore_db   = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem



[mysqldump]
quick
quote-names
max_allowed_packet   = 16M

[mysql]
#no-auto-rehash   # faster start of mysql but no tab completition

[isamchk]
key_buffer      = 16M

#
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/


Перейти в начало страницы
 
+Цитировать сообщение
VasyaFarpost
сообщение 23.9.2014, 21:16
Сообщение #2





Группа: Пользователи
Сообщений: 3 351
Регистрация: 13.9.2013




Ну кто-то из твоих ботов или других программ не закрывает соединения с базой, чего тут оптимизировать-то? Ищи баги)
Перейти в начало страницы
 
+Цитировать сообщение
kradabash
сообщение 23.9.2014, 21:22
Сообщение #3





Группа: Пользователи
Сообщений: 281
Регистрация: 19.1.2014




Цитата(VasyaFarpost @ 23.9.2014, 22:16) *
Ну кто-то из твоих ботов или других программ не закрывает соединения с базой, чего тут оптимизировать-то? Ищи баги)

Да совершенно верно, есть такое в боте, знакомый пытается исправить. Так-же более продвинутые юзеры посоветовали оптимизировать базу, мол поможет. Потому и обратился сюда. Возможно провести какие тесты, пока всё что есть приложил. Но вижу есть ошибки, дальше их ещё больше как пройдёт часов 5.
Перейти в начало страницы
 
+Цитировать сообщение
VasyaFarpost
сообщение 23.9.2014, 21:31
Сообщение #4





Группа: Пользователи
Сообщений: 3 351
Регистрация: 13.9.2013




Цитата
Так-же более продвинутые юзеры посоветовали оптимизировать базу, мол поможет.

ты скриншот свой почитай внимательно, там даже написано что сделать надо-)
Перейти в начало страницы
 
+Цитировать сообщение
kradabash
сообщение 23.9.2014, 21:42
Сообщение #5





Группа: Пользователи
Сообщений: 281
Регистрация: 19.1.2014




Цитата(VasyaFarpost @ 23.9.2014, 22:31) *
ты скриншот свой почитай внимательно, там даже написано что сделать надо-)

Я знаю что нужно оптимизировать таблицы. Сделать дефрагментацию.
и т.д.
Научите это делать (IMG:style_emoticons/default/smile.gif) Вот зачем я сюда пришёл (IMG:style_emoticons/default/smile.gif) . Ссылок у меня уже целая тонна. Прочитал коло 10 страниц, а как это сделать без последствий ХЗ!
Легче учиться на практике чем по теории...

Сообщение отредактировал kradabash - 23.9.2014, 21:43
Перейти в начало страницы
 
+Цитировать сообщение
VasyaFarpost
сообщение 23.9.2014, 21:54
Сообщение #6





Группа: Пользователи
Сообщений: 3 351
Регистрация: 13.9.2013




Цитата(kradabash @ 23.9.2014, 22:42) *
Научите это делать (IMG:style_emoticons/default/smile.gif)

(IMG:http://s58.radikal.ru/i162/1409/91/00fbc2969ef8.jpg)

Но это вряд ли поможет, если у тебя кривые боты.

Сообщение отредактировал VasyaFarpost - 23.9.2014, 21:54
Перейти в начало страницы
 
+Цитировать сообщение
kradabash
сообщение 23.9.2014, 22:08
Сообщение #7





Группа: Пользователи
Сообщений: 281
Регистрация: 19.1.2014




Цитата(VasyaFarpost @ 23.9.2014, 22:54) *
(IMG:http://s58.radikal.ru/i162/1409/91/00fbc2969ef8.jpg)

Но это вряд ли поможет, если у тебя кривые боты.

Да я чёт не в ту степь полез (IMG:style_emoticons/default/smile.gif) Да боты косячат...

Пойду ещё 10 страниц прочитаю (IMG:style_emoticons/default/smile.gif)
Перейти в начало страницы
 
+Цитировать сообщение
kitsum
сообщение 24.9.2014, 15:21
Сообщение #8





Группа: Пользователи
Сообщений: 39
Регистрация: 6.1.2012




что за боты такие адские? они напрямую в базу с интернетов что ли коннектятся? если нет то может мемкеш поможет отцу ботостроения. ну, и вообще, то что коннекшн не закрывается это багущий баг. как так можно то вообще?)
Перейти в начало страницы
 
+Цитировать сообщение
kradabash
сообщение 25.9.2014, 14:12
Сообщение #9





Группа: Пользователи
Сообщений: 281
Регистрация: 19.1.2014




Цитата(kitsum @ 24.9.2014, 16:21) *
что за боты такие адские? они напрямую в базу с интернетов что ли коннектятся? если нет то может мемкеш поможет отцу ботостроения. ну, и вообще, то что коннекшн не закрывается это багущий баг. как так можно то вообще?)

Ну боты: Ghost One 1.7.266 (изначально бралась самая чистая версия). Потом разумеется модифицировалась под свои нужды, но данный баг* уже был в этой версии.
Продвинутые Ботовод-цы сказали мол 100% нужно оптимизировать саму базу на LInux и пофиксить бота. Моих знаний далеко не хватает... Платить пока что нет возможности.
Да, боты не закрывают коннект к базе, потому у меня и выставлено значение = 2500 и за 10 часов при маленьком онлайне база разумеется падает. Не говоря уже о потребляемости ОЗУ (вообще тьма). Выслушаю любые советы, направления.

Сам читаю журнальчик по мускулу (IMG:style_emoticons/default/smile.gif) Но это так далеко от истины что ппц...

Сообщение отредактировал kradabash - 25.9.2014, 14:16
Перейти в начало страницы
 
+Цитировать сообщение
VasyaFarpost
сообщение 25.9.2014, 14:18
Сообщение #10





Группа: Пользователи
Сообщений: 3 351
Регистрация: 13.9.2013




Цитата
Сам читаю журнальчик по мускулу Но это так далеко от истины что ппц...

причем здесь мускул? исходник бота смотри, все проблемы там
Перейти в начало страницы
 
+Цитировать сообщение
kradabash
сообщение 25.9.2014, 14:28
Сообщение #11





Группа: Пользователи
Сообщений: 281
Регистрация: 19.1.2014




Цитата(VasyaFarpost @ 25.9.2014, 15:18) *
причем здесь мускул? исходник бота смотри, все проблемы там

Меня вчера с такими изречениями послали нахер. И сказали делай сам, в чём я был огорчён (IMG:style_emoticons/default/smile.gif) Сказали ясно-понятно, если не сделать оптимизацию в бд никаким образом бота не пофиксить. Разумеется бота тоже фиксить надо.

Сообщение отредактировал kradabash - 25.9.2014, 14:28
Перейти в начало страницы
 
+Цитировать сообщение
kitsum
сообщение 26.9.2014, 11:25
Сообщение #12





Группа: Пользователи
Сообщений: 39
Регистрация: 6.1.2012




1. попробуй:
max_connections = 500
wait_timeout = 300

т.е. убавь максимальное кол-во подключений. расширять бесконечно это нельзя.
таймаут 300 - пять минут. достаточно для любого вменяемого запроса.

ну, с таймаутом поиграйся, чем меньше тем лучше на самом деле.

2. если не помогает и, коли некому фиксить саму программу, то сделай в кроне рестарт мускуль сервера раз в 5 часов(у тебя падает раз в 10 так что будет запас прочности) и не парься.

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

Сообщение отредактировал kitsum - 26.9.2014, 11:26
Перейти в начало страницы
 
+Цитировать сообщение
kradabash
сообщение 27.9.2014, 17:16
Сообщение #13





Группа: Пользователи
Сообщений: 281
Регистрация: 19.1.2014




Цитата(kitsum @ 26.9.2014, 12:25) *
1. попробуй:
max_connections = 500
wait_timeout = 300

т.е. убавь максимальное кол-во подключений. расширять бесконечно это нельзя.
таймаут 300 - пять минут. достаточно для любого вменяемого запроса.

ну, с таймаутом поиграйся, чем меньше тем лучше на самом деле.

2. если не помогает и, коли некому фиксить саму программу, то сделай в кроне рестарт мускуль сервера раз в 5 часов(у тебя падает раз в 10 так что будет запас прочности) и не парься.

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

Да спасиб. Пофиксили бота на макс коннекшион, теперь стабильно 73 держиться не меньше не больше что странно.
Вот нашёл статью http://web-scalability.com/2008/05/30/mysq...BE%D0%BC%D1%83/
На сколько она актуальна?
Завтра начну химичить (IMG:style_emoticons/default/smile.gif) Сюда буду скидывать что не понятно, заранее спасибо за помощь.

Сообщение отредактировал kradabash - 27.9.2014, 17:18
Перейти в начало страницы
 
+Цитировать сообщение
kradabash
сообщение 29.9.2014, 21:01
Сообщение #14





Группа: Пользователи
Сообщений: 281
Регистрация: 19.1.2014




В общем приступил я к оптимизации, пока что просто изменять конфигурационный файл.

Комплектация виртуального сервера:
Процессор: Intel Xeon E5-1650 v2 3.5Ghz Turbo Boost 3.9 GHz
Ядер: 2
ОЗУ: 1,5 гб
SSD: 60 гб
Трафик: 1Gbps port

Решил поменять дефолтный my.cfg на my-large. Добавил в него строки:

Код
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket        = /var/run/mysqld/mysqld.sock
port        = 3306
basedir        = /usr
datadir        = /var/lib/mysql
tmpdir        = /tmp
lc-messages-dir    = /usr/share/mysql


И база в итоге запустилась. Результата не дало, через каждые 30 \ 1 минуту ЦП = до 110 %. Откатился на свой дефолтный my.cfg.

Добавил запись: innodb_buffer_pool_size = 150M

(IMG:http://i7.pixs.ru/thumbs/2/7/5/Optimizaci_7749888_14038275.jpg)

Добавляю: query_cache_limit = 3M, и всё равно толку 0. Подскажите что ещё (IMG:style_emoticons/default/smile.gif)

Перейти в начало страницы
 
+Цитировать сообщение
mainframe
сообщение 30.9.2014, 7:57
Сообщение #15





Группа: Пользователи
Сообщений: 245
Регистрация: 2.9.2010
Из: Владивосток




> #log_slow_queries = /var/log/mysql/mysql-slow.log
> #log-queries-not-using-indexes
> #long_query_time = 2 # в секундах, поменять на нужное

Вот это в конфиге включи - увидишь что тормозит из запросов на пиковой загрузке. mysqltuner вижу, советовали.
Перейти в начало страницы
 
+Цитировать сообщение
lsv
сообщение 11.10.2014, 21:50
Сообщение #16





Группа: Пользователи
Сообщений: 84
Регистрация: 11.1.2013




А зачем тебе всех в базу пускать? Т.е. я понимаю что база общедоступная, сделай доступ только для определенного хоста и все, остальные не должны иметь доступ к БД.
Перейти в начало страницы
 
+Цитировать сообщение
13Артур13
сообщение 29.10.2014, 17:41
Сообщение #17





Группа: Пользователи
Сообщений: 3 874
Регистрация: 21.9.2009




Цитата(kradabash @ 29.9.2014, 21:01) *
В общем приступил я к оптимизации, пока что просто изменять конфигурационный файл.

Комплектация виртуального сервера:
Процессор: Intel Xeon E5-1650 v2 3.5Ghz Turbo Boost 3.9 GHz
Ядер: 2
ОЗУ: 1,5 гб
SSD: 60 гб
Трафик: 1Gbps port

Решил поменять дефолтный my.cfg на my-large. Добавил в него строки:

Код
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket        = /var/run/mysqld/mysqld.sock
port        = 3306
basedir        = /usr
datadir        = /var/lib/mysql
tmpdir        = /tmp
lc-messages-dir    = /usr/share/mysql


И база в итоге запустилась. Результата не дало, через каждые 30 \ 1 минуту ЦП = до 110 %. Откатился на свой дефолтный my.cfg.

Добавил запись: innodb_buffer_pool_size = 150M

(IMG:http://i7.pixs.ru/thumbs/2/7/5/Optimizaci_7749888_14038275.jpg)

Добавляю: query_cache_limit = 3M, и всё равно толку 0. Подскажите что ещё (IMG:style_emoticons/default/smile.gif)

Если у тебя стоит там убунту то AppArmor вернет все настройки сразу на место. а не через 30-1 минуту... Ты в нем изменения проведи....
Перейти в начало страницы
 
+Цитировать сообщение
kradabash
сообщение 5.11.2014, 13:25
Сообщение #18





Группа: Пользователи
Сообщений: 281
Регистрация: 19.1.2014




Цитата(13Артур13 @ 29.10.2014, 17:41) *
Если у тебя стоит там убунту то AppArmor вернет все настройки сразу на место. а не через 30-1 минуту... Ты в нем изменения проведи....

Да всё решил проблему. Дефолтный Бот кривой оказался, пересчитывает ПТС у всех игроков, а нужно у определённых, так любая база загнётся. У тебя там как по ВПС? (IMG:style_emoticons/default/smile.gif) Зашёл на сайт, тарифов нема.

Сообщение отредактировал kradabash - 5.11.2014, 13:27
Перейти в начало страницы
 
+Цитировать сообщение
13Артур13
сообщение 11.11.2014, 21:21
Сообщение #19





Группа: Пользователи
Сообщений: 3 874
Регистрация: 21.9.2009




Цитата(kradabash @ 5.11.2014, 13:25) *
Да всё решил проблему. Дефолтный Бот кривой оказался, пересчитывает ПТС у всех игроков, а нужно у определённых, так любая база загнётся. У тебя там как по ВПС? (IMG:style_emoticons/default/smile.gif) Зашёл на сайт, тарифов нема.

ВПС не профильные продажи...
Перейти в начало страницы
 
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Для

Тема
Сообщение
Текстовая версия Сейчас: 17.11.2019, 9:38