2016-12-12 6 views
1

最近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でこの問題を解決してくれましたか?

答えて

2

私はちょうどhttps://stackoverflow.com/a/39506150/2831606を見つけました。これは、私がこの作業をするために必要な欠けているナゲットでした。 100-couchdb.confはとしよう

具体的には、私は、ここで私の構成である要約する、だから、

DefaultLimitNOFILE=40000 

を/etc/systemd/system.confを変更し、追加する必要がありました

cp 100-couchdb.conf /etc/security/limits.d/100-couchdb.conf 
cp 100-couchdb.conf /etc/security/limits.conf 
echo "session required pam_limits.so" >> /etc/pam.d/su 
#<domain> <type> <item> <value> 
couchdb  hard  nofile 40000 
couchdb  soft  nofile 40000 
*   hard  nofile 40000 
*   soft  nofile 40000 
root   hard  nofile 40000 
root   soft  nofile 40000 

1)はPAM経由の制限を設定します

2))システムD

sed -i "s/\[Service\]/\[Service\]\nEnvironment=ERL_MAX_PORTS=40000/g" /etc/systemd/system/multi-user.target.wants/couchdb.service 

4を介しアーランによって許可接続数を増やす)にsystemd

echo "DefaultLimitNOFILE=40000" >> /etc/systemd/system.conf 

3ファイルの許容数を増やしても(アーランによって許可接続の数を増やします私たちがsystemd経由でこれを設定しているので、これが必要なのかどうかは分かりませんが、怪我はしません)

echo "export ERL_MAX_PORTS=40000" >> /etc/default/couchdb 

注:runnいくつかのストレステストを行った結果、10,000個の同時接続をサポートするために、制限を約40000に増やす必要があることがわかりました。これは、接続ごとに複数のファイルが必要なオーバーヘッドが原因であると推測しています。

関連する問題