Używam Ubuntu 16.04 Server na XenServer i mam problem z limitem otwartych plików MySql.
Oto co dotychczas zrobiłem:
sudo nano /etc/security/limits.conf (odniesienie)
* 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 (odniesienie)
limit nofile 1024000 1024000
limit nproc 102400 102400
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf (odniesienie)
[mysqld_safe]
open_files_limit = 1024000
[mysqld]
open_files_limit = 1024000
Gdy powyższe nie zadziałało, przystąpiłem do następujących czynności:
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
Po zalogowaniu się na konto użytkownika wszystko wydaje się w porządku:
ulimit -Hn
1024000
ulimit -Sn
1024000
Jeśli loguję się jako mysql, to też wygląda dobrze:
mysql@server:~$ ulimit -Hn
1024000
mysql@server:~$ ulimit -Sn
1024000
Jednak gdy patrzę na proc:
ps -ef | grep mysql
cat /proc/1023/limits | grep open
Max open files 65536 65536 files
Lub kiedy patrzę na to w MySql:
mysql> show global variables like 'open%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 65536 |
+------------------+-------+
Z dzienników (/var/log/mysql/error.log):
2016-07-25T05: 44: 35.453668Z 0 [Ostrzeżenie] Nie można zwiększyć liczby max_open_files do więcej niż 65536 (żądanie: 1024000)
Nie mam tutaj pomysłów. Na początku zacząłem od open_files_limit przy 1024 i jeden z powyższych musiał go zmienić, ale potrzebuję go, aby przejść wyżej. Osiągam już ten limit, ponieważ mam wiele baz danych i tabel, które czasem mają wiele partycji.
Próbowałem nawet liczb mniej agresywnych niż 1024000, ale bez powodzenia.
Jakieś pomysły?
źródło
/lib/systemd/system/mysql.service
. Więc już przeszliśmy do metody, o której mówiłeś. Zapomniałem zaktualizować swoją odpowiedź tutaj. Jeszcze raz dziękuję za przypomnienie.