[ https://issues.apache.org/jira/browse/COUCHDB-1171?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13037292#comment-13037292 ] Robert Newson commented on COUCHDB-1171: ---------------------------------------- Is this a couchdb bug? it seems you are simply hitting your systems limit? > Multiple requests to _changes feed causes {error, system_limit} "Too many processes" > ------------------------------------------------------------------------------------ > > Key: COUCHDB-1171 > URL: https://issues.apache.org/jira/browse/COUCHDB-1171 > Project: CouchDB > Issue Type: Bug > Affects Versions: 1.0.2, 1.0.3, 1.1 > Reporter: Alexander Shorin > > Originally I have investigated of issue 182 of couchdb-python package where calling db.changes() function over 32768 times generates next messages in CouchDB log: > [Thu, 19 May 2011 14:03:26 GMT] [info] [<0.2909.0>] 127.0.0.1 - - 'GET' /test/_changes 200 > [Thu, 19 May 2011 14:03:26 GMT] [error] [emulator] Too many processes > [Thu, 19 May 2011 14:03:26 GMT] [error] [<0.2909.0>] Uncaught error in HTTP request: {error,system_limit} > [Thu, 19 May 2011 14:03:26 GMT] [info] [<0.2909.0>] Stacktrace: [{erlang,spawn, > [erlang,apply, > [#Fun,[]]]}, > {erlang,spawn,1}, > {couch_httpd_db,handle_changes_req,2}, > {couch_httpd_db,do_db_req,2}, > {couch_httpd,handle_request_int,5}, > {mochiweb_http,headers,5}, > {proc_lib,init_p_do_apply,3}] > [Thu, 19 May 2011 14:03:26 GMT] [info] [<0.2909.0>] 127.0.0.1 - - 'GET' /test/_changes 500 > More info about this issue could be found there: http://code.google.com/p/couchdb-python/issues/detail?id=182 > However, I still couldn't reproduce this error using only httplib module, but I've got that same behavior using feed=longpool option: > from httplib import HTTPConnection > def test2(): > conn = HTTPConnection('localhost:5984') > conn.connect() > i = 0 > while(True): > conn.putrequest('GET', '/test/_changes?feed=longpool') > conn.endheaders() > conn.getresponse().read() > i = i + 1 > if i % 100 == 0: > print i > When i get's around 32667 exception raises > Traceback (most recent call last): > File "/home/kxepal/projects/couchdb-python/issue-182/test.py", line 259, in > test2() > File "/home/kxepal/projects/couchdb-python/issue-182/test.py", line 239, in test2 > resp.read() > File "/usr/lib/python2.6/httplib.py", line 522, in read > return self._read_chunked(amt) > File "/usr/lib/python2.6/httplib.py", line 565, in _read_chunked > raise IncompleteRead(''.join(value)) > httplib.IncompleteRead: IncompleteRead(0 bytes read) > [Thu, 19 May 2011 14:10:20 GMT] [info] [<0.3240.4>] 127.0.0.1 - - 'GET' /test/_changes?feed=longpool 200 > [Thu, 19 May 2011 14:10:20 GMT] [error] [emulator] Too many processes > [Thu, 19 May 2011 14:10:20 GMT] [error] [<0.3240.4>] Uncaught error in HTTP request: {error,system_limit} > [Thu, 19 May 2011 14:10:20 GMT] [info] [<0.3240.4>] Stacktrace: [{erlang,spawn, > [erlang,apply, > [#Fun,[]]]}, > {erlang,spawn,1}, > {couch_httpd_db,handle_changes_req,2}, > {couch_httpd_db,do_db_req,2}, > {couch_httpd,handle_request_int,5}, > {mochiweb_http,headers,5}, > {proc_lib,init_p_do_apply,3}] > [Thu, 19 May 2011 14:10:20 GMT] [info] [<0.3240.4>] 127.0.0.1 - - 'GET' /test/_changes?feed=longpool 500 > Same error. I know, that test function is quite outside from real use case, but is this correct behavior and couldn't it be used in malicious aims? > This exception occurres only for multiple requests within single connection for changes feed, chunked lists or attachments are not affected, if I've done all right. > Test environment: > Gentoo Linux 2.6.38 > CouchDB 1.0.2 release > couchdb-python@63feefd9e3b6 > Python 2.6.6 > If there is needed some additional information I could try to provide it. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira