Ubuntu 16.04サーバーのMySql open_file_limitは65536より高くなりません


16

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よりも攻撃性の低い数字も試しましたが、運はありませんでした。

アイデアはありますか?

回答:


24

これは、Ubuntu Xenial 16.04で機能しました。

dirを作成します /etc/systemd/system/mysql.service.d

入れる/etc/systemd/system/mysql.service.d/override.conf

[Service]
LimitNOFILE=1024000

今すぐ実行

systemctl daemon-reload
systemctl restart mysql.service

確かに、LimitNOFILE=infinity実際には65536に設定されているようです。

以下を実行することにより、MySQLの起動後に上記を検証できます。

cat /proc/$(pgrep mysql)/limits | grep files

1
私が最初にここに来たが、私は修正する方法を説明する別のスレッドを発見したいくつかのシステムファイルを調整して少し不満を感じたので、次のアップグレード時に上書き/ O危険にさらすサービスファイルW:stackoverflow.com/questions/27849331/...
トーマス・アーバン

@cepharumに感謝します。答えを更新しました。実際、レポファイルを更新したため、サーバーで既に問題が発生しています/lib/systemd/system/mysql.service。そこで、あなたが参照したメソッドにすでに移動しました。ここで答えを更新するのを忘れました。お知らせいただきありがとうございます。
Jeroenバーミューレン-MageHost

このコマンドは機能しません:cat / proc / $(pgrep mysql)/ limits | grepファイル
バジルA

1
@BasilAこのコマンドは、MySQLの実行後にのみ機能します。Ubuntu 16.04でテストしました。
イェルーンバーミューレン- MageHost
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.