docker swarmkit + sqlalchemy + tornado 经常挂掉

2017-05-09 14:11:58 +08:00
 Je3son

项目使用 tornado + sqlalchemy+docker 部署在 5 台主机上运行,使用 swarmkit 进行集群管理,但是现在出现了一个问题:在查询数据库的时候偶尔会卡死(一天好几次),然后程序无法运行了,但是不会抛出任何错误。

后来尝试放弃 docker,直接在虚拟机中运行 poetgres 已经跑了半个月了还没有出现错误,后来我们猜测会不会是 项目使用 tornado + sqlalchemy+docker 部署在 5 台主机上运行,使用 swarmkit 进行集群管理,但是现在出现了一个问题:在查询数据库的时候偶尔会卡死(一天好几次),然后程序无法运行了,但是不会抛出任何错误。

        try:
            logging.info('get department ' + _department_uuid)
            department = DepartmentNode.get_department_by_uuid(_department_uuid, self.session)
            if department:
                self.response["app_name"] = department.name
            logging.info('end debug get department')
        except Exception as e:
            logging.error('error get department ' + _department_uuid + ' ' + e.message)

这是会出现问题的一段代码,当执行到查 department 的时候程序就卡住了,没有异常抛出,没有错误日志,数据库也没有任何日志。

@classmethod
    def get_department_by_uuid(cls, uuid, session):
        try:
            department = session.query(DepartmentNode).filter(
                and_(DepartmentNode.deleted_at == None,
                     DepartmentNode.uuid == uuid)
            ).one()
        except MultipleResultsFound, e:
            return None
        except NoResultFound, e:
            return None
        except Exception, e:
            return None
        else:
            return department

后来尝试放弃 docker,直接在虚拟机中运行 poetgres 使用 ip 连接已经跑了半个月了还没出过问题,后来我们猜测会不会是 swarmkit 的 DNS 解析问题,然后我就做了个实验,在 swarm 注册 3 个数据库,分别使用服务名,网络别名和 host 模式插入数据,跑了一天了,插入了 300 万条数据还没有出现问题。。。有没有大佬遇到过类似的问题?

1822 次点击
所在节点    Python
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/360105

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX