Cherry non-closing sockets

I use cherrypy as a web server. This gives good results for my application, but it is a very big problem. cherrypy crashes after a couple of hours, stating that it cannot create a socket because too many files open:

[21/Oct/2008:12:44:25] ENGINE HTTP Server 
cherrypy._cpwsgi_server.CPWSGIServer(('0.0.0.0', 8080)) shut down    
[21/Oct/2008:12:44:25] ENGINE Stopped thread '_TimeoutMonitor'.    
[21/Oct/2008:12:44:25] ENGINE Stopped thread 'Autoreloader'.    
[21/Oct/2008:12:44:25] ENGINE Bus STOPPED    
[21/Oct/2008:12:44:25] ENGINE Bus EXITING    
[21/Oct/2008:12:44:25] ENGINE Bus EXITED    
Exception in thread HTTPServer Thread-3:    
Traceback (most recent call last):    
  File "/usr/lib/python2.3/threading.py", line 436, in __bootstrap    
    self.run()    
  File "/usr/lib/python2.3/threading.py", line 416, in run   
    self.__target(*self.__args, **self.__kwargs)    
  File "/usr/lib/python2.3/site-packages/cherrypy/process/servers.py", line 73, in 
_start_http_thread    
    self.httpserver.start()    
  File "/usr/lib/python2.3/site-packages/cherrypy/wsgiserver/__init__.py", line 1388, in start
    self.tick()    
  File "/usr/lib/python2.3/site-packages/cherrypy/wsgiserver/__init__.py", line 1417, in tick    
    s, addr = self.socket.accept()    
  File "/usr/lib/python2.3/socket.py", line 167, in accept    
    sock, addr = self._sock.accept()    
error: (24, 'Too many open files')    
[21/Oct/2008:12:44:25] ENGINE Waiting for child threads to terminate..

I tried to figure out what was going on. My application does not open any file or any socket, etc. My file only opens a couple of berkeley dbs. I investigated this question further. I saw the file descriptors used by my cherry process with id 4536 in / proc / 4536 / fd / New sockets were originally created and cleaned properly, but after an hour I found that it had about 509 sockets that were not cleaned. All sockets were in CLOSE_WAIT state. I got this information using the following command:

netstat -ap | grep "4536" | grep CLOSE_WAIT | wc -l

CLOSE_WAIT , . Cherrypy ? ?

:

cherrypy.config.update({'server.socketQueueSize': '10'})

, , , 10, . , , .

- ? , ? ? ?

:

CherryPy-3.1.0

python 2.3.4

Red Hat Enterprise Linux ES release 4 (Nahant Update 7)

!

+3
1

, ( ) , ; , , , .

- ; -, , . Hello World, CherryPy; , - , , ( ) .

+4

Source: https://habr.com/ru/post/1698528/


All Articles