web-dev-qa-db-ja.com

CentOS / RHELでのnprocの増加

Mysqldがスレッドを使い果たし、高負荷時にエラーをスローするという問題があります。私はこれを、pidが1024プロセスのソフト制限に制限されているように見える問題にまでさかのぼります(読みやすさに関する他の制限を削除しました):

[root@db1 limits.d]# cat /proc/`pidof mysqld`/limits
Limit                     Soft Limit           Hard Limit           Units
Max processes             1024                 191967               processes

/etc/security/limits.d/に99-mysql.confというファイルがあります。このファイルには次のものが含まれています。

mysql soft nofile 20000
mysql hard nofile 20000
mysql soft nproc 20000
mysql hard nproc 20000

私が見る限り、問題はユーザーがMySQLを起動したことが原因です。私はこれをテストしていませんが、MySQLが起動時にシステムによって起動された場合、正しい制限があるはずだと思います。

このpidおよび将来のmysqldプロセスのnprocのソフト制限を増やす方法はありますか?

3
Noodles

以下を使用して、実行中のpidの制限を設定できるようです。

echo -n "Max processes=20000:191967" > /proc/`pidof mysqld`/limits

これで当面の問題は解決しますが、MySQLを再起動すると、制限をリセットする必要があります(これを起動スクリプトに追加しない限り)。これは苦痛のようです。

2
Noodles

次のエントリを探して削除します。

/etc/security/limits.d/90-nproc.conf

また、limits.dファイルを追加します。

root soft nofile 20000
root hard nofile 20000
root soft nproc 20000
root hard nproc 20000

これは、ルートプロンプトからの再起動をカバーします。

2
dmourati