CentOS7でVNCが起動失敗。Too many open files

サーバー



CentOS7でVNCを使う


CentOS7の操作をVNCにて行うため、yumコマンドでVNCをインストールします

yum install tigervnc-server


パスワードやサービスの設定、F/Wの通信許可を行いサービスの起動すると、何やら失敗している旨のエラーメッセージが表示されます。


# systemctl start vncserver@:1                                                                            
Error: Too many open files
Job for vncserver@:1.service failed because a configured resource limit was exceeded. See "systemctl status vncserver@:1.service" and "journalctl -xe" for details.



エラー内容はsystemctl status vncserver@:1.serviceもしくはjournalctl -xeで確認してという事です。



そしてコマンドを叩くと以下のようなエラーが出力されました。

# systemctl status vncserver@:1.service    

 Failed to set a watch for vncserver@:1.service's PID file /home/***/.vnc/***:1.pid: T...en files


右端が「T...en files」となっていますが、Too many open filesを省略表示しているだけのようです。


※journalctl -xeだとToo many open filesのエラー表示を確認できました。





Too many open filesとは


Too many open filesとは、Linuxでプロセスが開けるファイルディスクリプタの上限のこと。

何かとエラーの原因になる事が多いようです。

上限値を少なくして利点があるのかといえば全くの不明で、デフォルト値1024がそもそも多いのか少ないのかもよくわかりません。


多めの値に設定すると、パフォーマンスが落ちる等の判りにくいデメリットがもしかしたら存在するのかもしれません。

ただこのエラーが出た場合、そのままにしておいてもサービスが利用できないため、Too many open filesの上限値を引き上げます。


上限の確認可能方法


以下のコマンドで確認することができます。

# ulimit -n
1024

で、増やすにはどうすればいいの?



インターネット上に色々情報が山積していますが、微妙に情報が古かったり書いてあることが違っていたりと、どれが正しいのかイマイチわかりません。

テスト環境の利点を活かして、一通り試していき、下記サイトの情報が有用でした。

http://blog.father.gedow.net/2016/03/28/limits-of-systemd/


参考サイトでは設定上限値の1006500を設定していますが、多すぎてちょっと不安がありましたから、65536で設定します。

上限を増やす方法


ディレクトリ作成
mkdir /etc/systemd/system/rsyslog.service.d

limits.conf作成
vi /etc/systemd/system/rsyslog.service.d/limits.conf

limits.confの中身
[Service]
LimitNOFILE=65536
LimitNPROC=65536

再起動
reboot


上限確認
# ulimit -n
65536

増えているー

状態確認
# systemctl status vncserver@\:1
(中略)
Active: active (running)

VNCが起動しているー


端末からVNCクライアント経由でログインできることを確認して完了です。





■関連記事

0 件のコメント :

コメントを投稿