2016-12-12 9 views
1

최근 우분투 16 및 CouchDB 1.6으로 업그레이드되었습니다. 내 서버가 많은 연결로 망치질되면 couch.log에 emfile 오류가 발생합니다. 이전에이 오류를 보았으며 https://wiki.apache.org/couchdb/Performance에 언급 된 시스템 리소스 제한과 관련이있는 것으로 보입니다. 내 주요 문제는 ERL_MAX_PORTS입니다 믿습니다. 나는 이미 ulimit를 PAM을 통해 40000으로 늘렸고/etc/default/couchdb에 export ERL_MAX_PORTS=40000을 추가했습니다.우분투에서 CouchDB 실행 중 emfile 오류가 발생했습니다.

우분투 16은 systemd를 사용하므로 /etc/systemd/system/multi-user.target.wants/couchdb.service의 [Service] 섹션에 Environment="ERL_MAX_PORTS=40000" 섹션을 추가했는데 작동하지 않는 것 같습니다.

나는 심지어/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으로 증가했으며 문제없이 많은 연결을 처리하고있었습니다.

우분투 16에서이 문제를 해결 한 사람이 있습니까?

답변

2

방금 ​​https://stackoverflow.com/a/39506150/2831606을 우연히 만났습니다. 누락 된 너겟 때문에이 작업을 수행해야했습니다. 100 couchdb.conf이하자

:

특히, 나는 여기에 내 구성되어 요약, 그래서

DefaultLimitNOFILE=40000 

을 /etc/systemd/system.conf을 수정하고 추가했다

PAM을 통해
#<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) 설정 범위 :

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 

2)) systemd

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

3 파일 허용 수를 증가

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

4) 또한 얼랑 허용 연결의 수를 증가 (systemd 통해 얼랑 허용 연결의 수를 늘리 우리는 이미 systemd를 통해이 구성된이 필요 있는지 확실하지 않습니다, 그러나

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

주) 다치게하지 않는 것 : runn 동안 스트레스 테스트를 한 결과 10,000 개의 동시 연결을 지원하기 위해 한계를 40000으로 늘려야한다는 것을 알았습니다. 나는 이것이 연결 당 여러 파일이 필요한 오버 헤드로 인한 것 같아요.

관련 문제