最近Ubuntu 16とCouchDB 1.6にアップグレードしました。私のサーバーが大量の接続でハンマーで叩かれると、couch.logにemfile
というエラーが出ます。私は前にこれらのエラーを見て、彼らはhttps://wiki.apache.org/couchdb/Performanceに記載されているシステムリソースの制限に関連しているようです。私の主な問題はERL_MAX_PORTS
であると信じています。私は既にumimimitをPAM経由で40000に増やし、export ERL_MAX_PORTS=40000
を/ etc/default/couchdbに追加しました。UbuntuでCouchDBを実行中にemfileエラーが発生しました。
Ubuntu 16はsystemdを使用しているので、Environment="ERL_MAX_PORTS=40000"
を/etc/systemd/system/multi-user.target.wants/couchdb.serviceの[Service]
セクションに追加しましたが、これはうまくいかないようです。
私はさらに、/ usr/bin/couchdbを修正し、env ERL_MAX_PORTS=40000
をスクリプトの先頭に追加しようとしました。
コマンドラインから手動でcouchdbを実行すると、動作するように見えます。 $ env ERL_MAX_PORTS=40000 && sudo /usr/bin/couchdb
。これは理想的な解決策ではなく、私はむしろこれをsystemdで動作させることになります。
私は以前にUbuntu 14でCouchDB 1.5を実行していましたが、システムリソース制限(https://wiki.apache.org/couchdb/Performance参照)を約40000に増やしました。問題なく多くの接続を処理していました。
誰もがUbuntu 16でこの問題を解決してくれましたか?