ฉันใช้เซิร์ฟเวอร์ 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
อย่างไรก็ตามเมื่อฉันดู proc:
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 โดยไม่มีโชค
มีความคิดอะไรบ้าง?