Saya menjalankan Ubuntu 16.04 Server di XenServer dan saya mengalami masalah dengan batas file terbuka MySql.
Inilah yang telah saya lakukan sejauh ini:
sudo nano /etc/security/limits.conf (referensi)
* 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 (referensi)
limit nofile 1024000 1024000
limit nproc 102400 102400
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf (referensi)
[mysqld_safe]
open_files_limit = 1024000
[mysqld]
open_files_limit = 1024000
Ketika hal di atas tidak berhasil, saya melanjutkan ke yang berikut:
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
Ketika saya masuk ke akun pengguna saya, semuanya tampak baik-baik saja:
ulimit -Hn
1024000
ulimit -Sn
1024000
Jika saya login sebagai mysql juga terlihat bagus:
mysql@server:~$ ulimit -Hn
1024000
mysql@server:~$ ulimit -Sn
1024000
Namun, ketika saya melihat proc:
ps -ef | grep mysql
cat /proc/1023/limits | grep open
Max open files 65536 65536 files
Atau ketika saya melihatnya di MySql:
mysql> show global variables like 'open%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 65536 |
+------------------+-------+
Dari log (/var/log/mysql/error.log):
2016-07-25T05: 44: 35.453668Z 0 [Peringatan] Tidak dapat meningkatkan jumlah max_open_files hingga lebih dari 65536 (permintaan: 1024000)
Saya benar-benar kehabisan ide di sini. Pada awalnya saya memang mulai dengan open_files_limit di 1024, dan salah satu di atas pasti telah mengubahnya, tetapi saya membutuhkannya untuk lebih tinggi. Saya sudah mencapai batas ini karena saya memiliki banyak basis data dan tabel yang terkadang memiliki banyak partisi.
Saya bahkan sudah mencoba angka yang kurang agresif daripada 1024000, tanpa hasil.
Ada ide di luar sana?
sumber
/lib/systemd/system/mysql.service
. Jadi kami sudah pindah ke metode yang Anda rujuk. Saya lupa memperbarui jawaban saya di sini. Sekali lagi terima kasih atas pengingatnya.