Ubuntu 16.04 (Mysql: max_connections) как установить?

123
Оптимизайка
На сайте с 11.03.2012
Offline
396
#11
secretiVe:
На сервере 1к+ игроков, создают коннекты к бд + с каждого запросы от 1 до бесконечности

Обычно делают database connection pool, т.е. лимитированное количество подключений разделяется между большим числом клиентов.

Как то так, наверное: http://php.net/manual/ru/mysqlnd-ms.pooling.php

---------- Добавлено 10.11.2017 в 20:18 ----------

secretiVe:
/etc/mysql/mysql.conf.d/mysqld.cnf:max_connections = 1000

ОК, значит вам нужно

1. В файл /etc/pam.d/common-session добавить строку


session required pam_limits.so

2. В файл /etc/security/limits.conf добавить строки


* hard nofile 16384
* soft nofile 8192

3. Перезагрузиться, проверить лимиты

ulimit -a

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
SV
На сайте с 28.12.2016
Offline
22
#12
Оптимизайка:
Обычно делают database connection pool, т.е. лимитированное количество подключений разделяется между большим числом клиентов.
Как то так, наверное: http://php.net/manual/ru/mysqlnd-ms.pooling.php

---------- Добавлено 10.11.2017 в 20:18 ----------


ОК, значит вам нужно

1. В файл /etc/pam.d/common-session добавить строку


session required pam_limits.so


2. В файл /etc/security/limits.conf добавить строки


* hard nofile 16384
* soft nofile 8192


3. Перезагрузиться, проверить лимиты

ulimit -a

Благодарю за помощь. Правда ещё не проверял, как будет возможность перезагрузить сервер сразу отпишу :)

Вы правильно заметили, лимиты для моей задачи слишком большие. Но знаний всё оптимизировать нету, да и не нужно если и так всё работает :)) Проблемы возникли только на 16.04.

Команды для вывода макс коннектов так и не нашёл, чтоб само считало и выводило текущее кол-во, так бы можно было задать точное кол-во. Скорее всего нужно скриптом выводить.

По поводу лимитов файлов, уже стоят такие значения:


root@:~# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 31732
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 31732
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
root@:~# ulimit -Hn
1048576
root@:~# ulimit -Sn
1024
root@:~#

Стоит ли их изменять?

[umka]
На сайте с 25.05.2008
Offline
456
#13
secretiVe:


root@:~# ulimit -a

Стоит ли их изменять?

Для пользователя root — определённо, нет.

Лог в помощь!
SV
На сайте с 28.12.2016
Offline
22
#14
'[umka:
;15335644']Для пользователя root — определённо, нет.

Всё по запущено от судо, под рутом мне удобней работать :)

coolwebsearcher
На сайте с 29.09.2008
Offline
87
#15

в убунте начиная с 15.04 upstart заменили на systemd и лимиты в файле

/etc/security/limits.conf для системных сервисов не используются. (лимиты применяются только для пользовательских сессий).

нужно сделать


mkdir /etc/systemd/system/mysql.service.d
vi /etc/systemd/system/mysql.service.d/override.conf

нужно добавить в файл /etc/systemd/system/mysql.service.d/override.conf


[Service]
LimitNOFILE=infinity
LimitMEMLOCK=infinity

после чего перечитать конфиг


systemctl daemon-reload

и сделать рестарт mysql


systemctl restart mysql

после чего будет max_connections 1000

Услуги (http://www.our-dns.info/) | Цены (http://www.our-dns.info/prices/) | Отзывы (/ru/forum/970789)
SV
На сайте с 28.12.2016
Offline
22
#16
coolwebsearcher:
в убунте начиная с 15.04 upstart заменили на systemd и лимиты в файле
/etc/security/limits.conf для системных сервисов не используются. (лимиты применяются только для пользовательских сессий).

нужно сделать

mkdir /etc/systemd/system/mysql.service.d
vi /etc/systemd/system/mysql.service.d/override.conf


нужно добавить в файл /etc/systemd/system/mysql.service.d/override.conf


[Service]
LimitNOFILE=infinity
LimitMEMLOCK=infinity


после чего перечитать конфиг

systemctl daemon-reload


и сделать рестарт mysql

systemctl restart mysql


после чего будет max_connections 1000

Не помогло. Сделал всё по инструкции, вывод после перезагрузки мускула:


| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+

Хотя в конфиге стоит 1000.

Буду пробовать способ оптимизайки :)))

Всё равно спасибо, ух какая непосильная задача увеличить лимит, для каких целей разработчики усложняют свои ос непонятно. Ничего против не имею, лезу не в свой монастырь т.к. не являюсь администратором сервера, но всё таки хотелось бы упростить такие вещи как простое увеличение лимитов.

---------- Добавлено 15.11.2017 в 08:34 ----------

Оптимизайка:
2. В файл /etc/security/limits.conf добавить строки

Это нормально что у меня строчка в limits.conf:

# /etc/security/limits.conf

Закомментирована?

[umka]
На сайте с 25.05.2008
Offline
456
#17

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

Сделайте:


mysqladmin | grep -A 1 "Default options"

и посмотрите, есть ли в выданном списке тот файл, который вы редактируете.

И потом посмотрите, не переопределяется ли установленное вами значение в следующих по списку файлах.

---------- Добавлено 15.11.2017 в 10:31 ----------

Для верности даже можно сначала сделать

ps ax | grep mysqld

Посмотреть, откуда он запускается, и список конфигов смотреть через него

/откуда/запускается/mysqld | grep -A 1 "Default options"

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

coolwebsearcher
На сайте с 29.09.2008
Offline
87
#18

а если так?


cp /lib/systemd/system/mysql.service /etc/systemd/system/
vim /etc/systemd/system/mysql.service

нужно добавить в файл /etc/systemd/system/mysql.service в самый низ


LimitNOFILE=infinity
LimitMEMLOCK=infinity

после чего


systemctl daemon-reload
systemctl restart mysql

если не изменяется, то что выводит


systemctl cat mysql
grep Warning /var/log/mysql/error.log
SV
На сайте с 28.12.2016
Offline
22
#19

Спасибо всем за помощь. Не успел всё опробовать, но вот какая ошибка вылазит когда захожу в базу:

mysql: [Warning] World-writable config file '/etc/mysql/mysql.conf.d/mysqld.cnf' is ignored.

Сейчас буду пробовать ваши способы :))

В my.cnf стоит такое:

!includedir /etc/mysql/conf.d/

!includedir /etc/mysql/mysql.conf.d/

Настройки мускула находятся в файле mysqld.cnf, который игнорится, почему то.

[umka]
На сайте с 25.05.2008
Offline
456
#20
secretiVe:
который игнорится, почему то.

Так ведь написано, почему игнорируется.

"World-writable" означает "кем угодно записываемый".

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий