V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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 · 2017-05-09 14:11:58 +08:00 · 1893 次点击
    这是一个创建于 2754 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2783 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:13 · PVG 10:13 · LAX 18:13 · JFK 21:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.