XenServerでUbuntu 16.04サーバーを実行していますが、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)
私はここで完全にアイデアを失っています。最初は1024のopen_files_limitから始めましたが、上記のいずれかで変更したに違いありませんが、もっと高くする必要があります。たくさんのパーティションを持つデータベースやテーブルがたくさんあるので、すでにこの制限に達しています。
1024000よりも攻撃性の低い数字も試しましたが、運はありませんでした。
アイデアはありますか?