推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
Je3son
V2EX  ›  Python

docker swarmkit + sqlalchemy + tornado 经常挂掉

  •  
  •   Je3son · May 9, 2017 · 2554 views
    This topic created in 3429 days ago, the information mentioned may be changed or developed.

    项目使用 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 万条数据还没有出现问题。。。有没有大佬遇到过类似的问题?

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2571 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 15:26 · PVG 23:26 · LAX 08:26 · JFK 11:26
    ♥ Do have faith in what you're doing.