更多并发用户连接时出现Neo4j连接错误 Neo4j 3.5.12社区 Python 3.6.9 neo4j驱动器==1.7.6 新螺栓==1.7.17 Ubuntu服务器18.04 烧瓶1.1.2

更多并发用户连接时出现Neo4j连接错误 Neo4j 3.5.12社区 Python 3.6.9 neo4j驱动器==1.7.6 新螺栓==1.7.17 Ubuntu服务器18.04 烧瓶1.1.2,ubuntu,neo4j,Ubuntu,Neo4j,我运行的一个web服务器突然经历了2000%的流量增长。在这一增长之前,一切都运转良好。然而,在几个小时(不确定多长时间,但在5个小时内)的繁忙交通之后,我看到了以下错误,然后不断地失败。就像连接没有被关闭或什么的 db = GraphDatabase.driver("bolt://localhost:MYPORTNO", auth=basic_auth(DATABASE_USERNAME, DATABASE_PASSWORD, encrypted=False)

我运行的一个web服务器突然经历了2000%的流量增长。在这一增长之前,一切都运转良好。然而,在几个小时(不确定多长时间,但在5个小时内)的繁忙交通之后,我看到了以下错误,然后不断地失败。就像连接没有被关闭或什么的

     db = GraphDatabase.driver("bolt://localhost:MYPORTNO", auth=basic_auth(DATABASE_USERNAME, DATABASE_PASSWORD, encrypted=False)
   File "/home/ubuntu/api/env/lib/python3.6/site-packages/neo4j/__init__.py", line 120, in driver
     return Driver(uri, **config)
   File "/home/ubuntu/api/env/lib/python3.6/site-packages/neo4j/__init__.py", line 161, in __new__
     return subclass(uri, **config)
   File "/home/ubuntu/api/env/lib/python3.6/site-packages/neo4j/__init__.py", line 235, in __new__
     pool.release(pool.acquire())
   File "/home/ubuntu/api/env/lib/python3.6/site-packages/neobolt/direct.py", line 715, in acquire
     return self.acquire_direct(self.address)
   File "/home/ubuntu/api/env/lib/python3.6/site-packages/neobolt/direct.py", line 608, in acquire_direct
     connection = self.connector(address, error_handler=self.connection_error_handler)
   File "/home/ubuntu/api/env/lib/python3.6/site-packages/neo4j/__init__.py", line 232, in connector
     return connect(address, **dict(config, **kwargs))
   File "/home/ubuntu/api/env/lib/python3.6/site-packages/neobolt/direct.py", line 972, in connect
     raise last_error
   File "/home/ubuntu/api/env/lib/python3.6/site-packages/neobolt/direct.py", line 962, in connect
     s = _connect(resolved_address, **config)
   File "/home/ubuntu/api/env/lib/python3.6/site-packages/neobolt/direct.py", line 843, in _connect
     raise ServiceUnavailable("Failed to establish connection to {!r} (reason {})".format(resolved_address, error))
neobolt.exceptions.ServiceUnavailable: Failed to establish connection to ('127.0.0.1', MYPORTNO) (reason [Errno 111] Connection refused)

如果我重新启动apache,它会再次工作,所以目前作为bandaid,我每隔几个小时在cron作业上做一次,但这似乎只是部分工作

我增加了页面缓存和堆计算

我将打开文件的限制从默认的1024个增加到50000个

我把服务器规格翻了一倍

从结构上讲,我在配置文件中创建了一个数据库驱动程序实例:

db = None
def getDB():
    global db
    if not db:
        db = GraphDatabase.driver("bolt://localhost:XXXXXX", auth=basic_auth(DATABASE_USERNAME, DATABASE_PASSWORD), encrypted=False) 

    return db
配置文件:

db = None
def getDB():
    global db
    if not db:
        db = GraphDatabase.driver("bolt://localhost:XXXXXX", auth=basic_auth(DATABASE_USERNAME, DATABASE_PASSWORD), encrypted=False) 

    return db
然后,我可以在我的模块文件中进行如下查询。我相信以下语法能够正确地管理由于
with
语句而打开和关闭的连接,因此不应保留打开的连接:

模块文件:

db = config.getDB()

with db.session() as s:
        with s.begin_transaction() as tx:
            tx.run("the cypher", {the params})
我还在日志中看到以下错误,尽管我不确定它们是否直接相关

ValueError: filedescriptor out of range in select()


有人知道是什么原因造成的,或者如何修复吗?谢谢

原来我有一个cron作业,每10分钟运行一次,每次都让驱动程序实例保持打开状态。小学生的错误