Я запускаю сервер Ubuntu 16.04 на XenServer, і я стикаюся з проблемою з обмеженням відкритого файлу MySql.
Ось що я зробив досі:
sudo nano /etc/security/limits.conf (посилання)
* soft nofile 1024000
* hard nofile 1024000
* soft nproc 102400
* hard nproc 102400
mysql soft nofile 1024000
mysql hard nofile 1024000
sudo nano /etc/init/mysql.conf (посилання)
limit nofile 1024000 1024000
limit nproc 102400 102400
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf (посилання)
[mysqld_safe]
open_files_limit = 1024000
[mysqld]
open_files_limit = 1024000
Коли вищезгадане не спрацювало, я перейшов до наступного:
sudo nano /etc/sysctl.conf
fs.file-max = 1024000
sudo nano /etc/pam.d/common-session
session required pam_limits.so
sudo nano /etc/pam.d/common-session-noninteractive
session required pam_limits.so
sudo nano /lib/systemd/system/mysql.service
LimitNOFILE=infinity
LimitMEMLOCK=infinity
Коли я входжу в обліковий запис користувача, все здається:
ulimit -Hn
1024000
ulimit -Sn
1024000
Якщо я ввійду як mysql, це також добре виглядає:
mysql@server:~$ ulimit -Hn
1024000
mysql@server:~$ ulimit -Sn
1024000
Однак, коли я дивлюсь на процедуру:
ps -ef | grep mysql
cat /proc/1023/limits | grep open
Max open files 65536 65536 files
Або коли я дивлюся на це в MySql:
mysql> show global variables like 'open%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 65536 |
+------------------+-------+
З журналів (/var/log/mysql/error.log):
2016-07-25T05: 44: 35.453668Z 0 [Попередження] Не вдалося збільшити кількість max_open_files до більше 65536 (запит: 1024000)
Я тут абсолютно не в ідеях. На початку я починав з open_files_limit з 1024, і один із перерахованих вище, мабуть, змінив його, але мені потрібно, щоб він піднявся вище. Я досягаю цієї межі вже тому, що у мене дуже багато баз даних і таблиць, які іноді мають багато розділів.
Я навіть спробував цифри менш агресивні, ніж 1024000, без удачі.
Якісь ідеї там?