Odoo 中文社区

    • 注册
    • 登录
    • 搜索
    • 版块
    • 标签
    • 热门
    • 用户
    • 群组

    Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

    由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

    本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

    开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

    如果您登录系统碰到问题,请在微信公众号留言:

    一个Odoo14服务频繁崩溃的案例

    Odoo 开发与实施交流
    3
    4
    895
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 保
      保定_粉刷匠 最后由 保定_粉刷匠 编辑

      Odoo14,操作系统Ubuntu18.04
      系统现象:正在使用的生产环境中的Odoo服务频繁崩溃,一天需要重启服务器多次。
      通过查看日志,发现下列异常记录:
      2021-04-15 12:59:11,665 27426 WARNING ? odoo.service.server: Thread <Thread(odoo.service.http.request.140616848307968, started 140616848307968)> virtual real time limit (137/120s) reached.
      2021-04-15 12:59:11,665 27426 INFO ? odoo.service.server: Dumping stacktrace of limit exceeding threads before reloading
      2021-04-15 12:59:11,674 27426 INFO ? odoo.tools.misc:

      Thread: <Thread(odoo.service.http.request.140616848307968, started 140616848307968)> (db:) (uid:n/a) (url:http://8.8.8.8:8069/web/database/backup)

      File: "/usr/lib/python3.6/threading.py", line 884, in _bootstrap
      self._bootstrap_inner()
      File: "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
      self.run()
      File: "/usr/lib/python3.6/threading.py", line 864, in run
      self._target(*self._args, **self._kwargs)
      File: "/usr/lib/python3.6/socketserver.py", line 654, in process_request_thread
      self.finish_request(request, client_address)
      File: "/usr/lib/python3.6/socketserver.py", line 364, in finish_request
      self.RequestHandlerClass(request, client_address, self)
      File: "/usr/lib/python3.6/socketserver.py", line 724, in init
      self.handle()
      File: "/opt/odoo14/odoo14-venv/lib/python3.6/site-packages/werkzeug/serving.py", line 329, in handle
      rv = BaseHTTPRequestHandler.handle(self)
      File: "/usr/lib/python3.6/http/server.py", line 418, in handle
      self.handle_one_request()
      File: "/opt/odoo14/odoo14-venv/lib/python3.6/site-packages/werkzeug/serving.py", line 364, in handle_one_request
      return self.run_wsgi()
      File: "/opt/odoo14/odoo14-venv/lib/python3.6/site-packages/werkzeug/serving.py", line 306, in run_wsgi
      execute(self.server.app)
      File: "/opt/odoo14/odoo14-venv/lib/python3.6/site-packages/werkzeug/serving.py", line 297, in execute
      write(data)
      File: "/opt/odoo14/odoo14-venv/lib/python3.6/site-packages/werkzeug/serving.py", line 278, in write
      self.wfile.write(data)
      File: "/usr/lib/python3.6/socketserver.py", line 803, in write
      self._sock.sendall(b)
      2021-04-15 12:59:11,675 27426 INFO ? odoo.service.server: Initiating server reload
      2021-04-15 12:59:12,092 27426 DEBUG ? odoo.service.server: current thread: <_MainThread(MainThread, started 140617347565376)>
      2021-04-15 12:59:12,093 27426 DEBUG ? odoo.service.server: process <_MainThread(MainThread, started 140617347565376)> (False)
      2021-04-15 12:59:12,093 27426 DEBUG ? odoo.service.server: process <Thread(odoo.service.cron.cron0, started daemon 140617081812736)> (True)
      2021-04-15 12:59:12,093 27426 DEBUG ? odoo.service.server: process <Thread(odoo.service.cron.cron1, started daemon 140617073420032)> (True)
      2021-04-15 12:59:12,093 27426 DEBUG ? odoo.service.server: process <Thread(odoo.addons.bus.models.bus.Bus, started daemon 140616909182720)> (True)
      2021-04-15 12:59:12,093 27426 DEBUG ? odoo.service.server: process <Thread(odoo.service.http.request.140616848307968, started 140616848307968)> (False)
      2021-04-15 12:59:12,093 27426 DEBUG ? odoo.service.server: process <Thread(openerp.longpolling.request.140616881878784, started daemon 140616881878784)> (True)
      2021-04-15 12:59:12,093 27426 DEBUG ? odoo.service.server: --
      分析:这台服务器的操作系统是Ubuntu18.04,按说Odoo18.04是直接安装不了Odoo14的deb包的,猜测这台服务器应该是采用了特殊的安装方法,查看Odoo服务,果然发现使用了Python虚拟环境。猜测这次莫名其妙的问题应该和这个虚拟python环境相关。
      因为我以前在Ubuntu18.04测试过Odoo14的源码运行,所以只要手动安装好Odoo14的依赖,Odoo14是可以在Ubuntu1804上运行的。
      解决办法:
      因为客户是生产环境,包含重要数据,所以小心翼翼的做好了数据库备份、附件备份,当前配置的各种备份。然后直接安装Odoo14的Python依赖,不再使用Python虚拟环境。
      Odoo学习QQ群号:374626483
      效果:
      Odoo崩溃现象消失,客户反馈说Odoo响应速度还提升了不少。
      总结:
      建议直接使用官方Odoo14的deb包安装,使用野路子安装很可能带来莫名其妙的问题。

      1 条回复 最后回复 回复 引用 0
      • digitalsatori
        digitalsatori 管理员 最后由 digitalsatori 编辑

        感觉你既没有分析出问题的实际原因也不明白什么是Python的虚拟环境,最后的结论也不完全正确。

        就你目前贴的log看:

        thread <Thread(odoo.service.http.request.140616848307968, started 140616848307968)> virtual real time limit (137/120s) reached.

        这里看到有线程运行超时被系统终止

        Thread: <Thread(odoo.service.http.request.140616848307968, started 140616848307968)> (db:) (uid:n/a) (url:http://8.8.8.8:8069/web/database/backup)

        这里看到应该是在做数据库备份。

        所以猜测问题的可能原因是安装了第三方自动数据库备份模块,可能跟数据库备份的异常终止有关。

        Python的虚拟环境是用来隔离系统Python或其他Python环境的函数库环境的,是为了保证函数库版本不冲突的。

        没有 “莫名其妙” 的问题,只有不理解的问题。

        【上海先安科技】(tony AT openerp.cn)

        保 1 条回复 最后回复 回复 引用 1
        • 保
          保定_粉刷匠 @digitalsatori 最后由 保定_粉刷匠 编辑

          @digitalsatori 是的,当时我也以为是数据库备份的问题,后来我问了客户,客户没有安装自动备份模块,而且手动备份后的数据库也很小,才几Mb。后来就没在数据库备份上找问题。我把日志level改为debug,也还是提示这个,其它日志都正常,但确实客户没有备份。后来百度了很久,有帖子说可能和虚拟python环境有关,才取消了python虚拟环境,Odoo服务就正常了。

          1 条回复 最后回复 回复 引用 0
          • Y
            youring 最后由 编辑

            FOR THE RECORD
            --limit-time-real=0
            https://github.com/odoo/odoo/issues/28808

            1 条回复 最后回复 回复 引用 0
            • First post
              Last post