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
raullf
V2EX  ›  Python

服务 10 多秒才返回是什么情况

  •  
  •   raullf · 2024-07-26 08:33:18 +08:00 via Android · 8751 次点击
    这是一个创建于 404 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1 ,django 3.14 ,只用于后端

    2 ,docker 部署的,分为前端,后端,mysql3 部分

    3 ,使用 docker 导出,再另外的服务器 load

    4 ,,简单的小程序,结果发现调用接口得 10 多秒



    可能是啥情况呢,求解答
    第 1 条附言  ·  2024-07-26 09:17:35 +08:00
    补充一下,程序依赖第三方接口
    会定时调用( 5s )
    51 条回复    2024-07-29 09:50:17 +08:00
    Kinnice
        1
    Kinnice  
       2024-07-26 08:39:45 +08:00 via Android   ❤️ 1
    盲猜 到数据库的 dns 解析问题,换成 ip 试试
    hackerfans
        2
    hackerfans  
       2024-07-26 08:40:04 +08:00
    可以检查一下 django 与 数据库通讯是不是有问题
    dbpe
        3
    dbpe  
       2024-07-26 08:40:36 +08:00
    不知道....建议链路跟踪一下
    douxc
        4
    douxc  
       2024-07-26 08:49:53 +08:00   ❤️ 5
    为啥大家都喜欢猜原因呢?看日志、debug ,跟踪一下请求确认具体慢的位置然后再找解决方案?
    Kinnice
        5
    Kinnice  
       2024-07-26 08:52:38 +08:00 via Android   ❤️ 4
    @douxc 知道怎么正确 debug 是程序员的核心竞争力之一,很多人都不具备.
    xzpjerry731
        6
    xzpjerry731  
       2024-07-26 08:53:12 +08:00 via iPhone
    cprofile 一下打个火焰图看看
    shawnbluce
        7
    shawnbluce  
       2024-07-26 09:01:59 +08:00   ❤️ 6
    这个问题真的很离谱,按理说实习生也不该问这种问题

    - 先定下来是网络慢还是程序慢
    - 再看是不是只有这一个请求慢
    - 再看看请求是否请求了数据库
    - 再检查 MySQL 的慢查询日志
    - 逐步逐步排查
    deplives
        8
    deplives  
       2024-07-26 09:05:16 +08:00 via iPhone   ❤️ 4
    开个 ssh 让我登上去看看
    SvenWong
        9
    SvenWong  
       2024-07-26 09:10:33 +08:00   ❤️ 1
    debug 是一种必备技能。

    某人从上海开车去苏州金鸡湖,买了一杯咖啡,然后原路返回竟然花了 2 天,请问这个问题该如何解,就掐表也能知道哪里出问题了。
    supuwoerc
        10
    supuwoerc  
       2024-07-26 09:11:33 +08:00   ❤️ 2
    没截图没日志,要不我给你卜一卦?
    gitdoit
        11
    gitdoit  
       2024-07-26 09:13:39 +08:00   ❤️ 1
    本来都 X 走了, 想想还是觉得这个问题 有点离谱. 你这就像是在问: 我今天中午没吃饭, 各位猜猜是什么原因; 简单点打个日志
    raullf
        12
    raullf  
    OP
       2024-07-26 09:15:27 +08:00 via Android
    @Kinnice 配置的宿主机的 ip ,端口,配了 hosts
    raullf
        13
    raullf  
    OP
       2024-07-26 09:16:31 +08:00 via Android
    @hackerfans 这个怎么检查
    sampeng
        14
    sampeng  
       2024-07-26 09:17:32 +08:00 via iPhone   ❤️ 2
    @raullf 不要问一句答一句。网友不是你的 chatgpt 。已经给思路了。这是完整思路。自己排查啊。每一步有什么想法可以一起讨论。
    dishonest
        15
    dishonest  
       2024-07-26 09:20:30 +08:00   ❤️ 4
    @SvenWong 是不是瞒着老婆在苏州 spa 过夜了
    vcode
        16
    vcode  
       2024-07-26 09:21:06 +08:00
    可能原因

    1. 数据库性能问题:
    • 查询效率低:检查是否有复杂的查询、缺少索引等问题。
    • 数据库连接池配置:确保数据库连接池的配置合适,避免连接不足或过多导致的性能瓶颈。
    2. 网络延迟:
    • 服务器之间的网络延迟:检查 Docker 容器之间的网络延迟,确保网络配置合理。
    • 服务器与客户端之间的网络延迟:使用网络工具(如 ping 或 traceroute )检查网络延迟。
    3. 资源限制:
    • CPU 或内存资源不足:检查服务器的 CPU 和内存使用情况,确保资源充足。
    • 磁盘 I/O 问题:检查磁盘读写性能,确保没有 I/O 瓶颈。
    4. 容器配置问题:
    • 容器资源限制:检查 Docker 容器的资源限制配置,确保没有限制 CPU 或内存。
    • 容器间通信:确保 Docker 网络配置合理,容器之间通信畅通。
    5. 应用程序问题:
    • 代码效率:检查代码是否存在性能瓶颈,如循环嵌套、耗时操作等。
    • 日志输出:过多的日志输出可能导致性能下降,检查日志配置。
    6. Docker 配置:
    • Docker 网络模式:检查 Docker 网络模式,可能需要调整为桥接模式( bridge )或主机模式( host )。
    • Docker 数据卷性能:检查数据卷的性能,确保挂载的数据卷没有 I/O 瓶颈。

    排查方法

    1. 日志检查:
    • 查看应用程序日志和 Docker 日志,查找异常信息。
    • 使用 Django 自带的 DEBUG 模式,检查请求处理过程中的耗时点。
    2. 性能监控:
    • 使用监控工具(如 htop 、top 、docker stats 等)监控服务器和容器的资源使用情况。
    • 使用 APM (应用性能管理)工具,如 New Relic 、Datadog 等,分析应用程序性能。
    3. 数据库优化:
    • 使用数据库性能分析工具(如 MySQL 的 EXPLAIN 语句)分析查询性能。
    • 添加适当的索引,优化查询语句。
    4. 网络排查:
    • 使用网络工具(如 ping 、traceroute 、curl )检查网络延迟和带宽。
    • 检查 Docker 网络配置,确保容器间通信顺畅。
    5. 应用程序调优:
    • 优化代码逻辑,减少不必要的计算和 I/O 操作。
    • 使用缓存技术(如 Redis )减少数据库查询次数。

    通过以上步骤,你可以逐步排查问题,找到性能瓶颈所在并进行优化。如果仍然无法解决问题,建议分步骤进行调试,从简单到复杂,逐一排除可能的原因。
    nevermoreluo
        17
    nevermoreluo  
       2024-07-26 09:35:57 +08:00
    1. 内网测试环境能不能复现
    2. 打开前端页面点开 network ,看 timing ,至少排除前端或者证书问题
    3. 我记得很多年前用过 django 就有 debug 模式(不过别用线上环境跑),https://github.com/jazzband/django-debug-toolbar ,排除 sql 问题
    4. 如果前端和 sql 都没问题。。。。。 你懂我想说什么
    Gannicus5
        18
    Gannicus5  
       2024-07-26 09:37:22 +08:00   ❤️ 4
    @vcode 不要直接 gpt ,这恶心版主黄牌都没有直接封号的
    asmoker
        19
    asmoker  
       2024-07-26 10:03:57 +08:00
    先加各种 debug 日志,看哪里的时间差大。再细化加日志,就能看出来哪里问题了。简单有效
    somebody1
        20
    somebody1  
       2024-07-26 10:04:07 +08:00
    @supuwoerc
    给他卜有什么意思,给 v 友算姻缘吧!
    elron
        21
    elron  
       2024-07-26 10:04:37 +08:00
    最基础的 debug 技能
    ytmsdy
        22
    ytmsdy  
       2024-07-26 10:10:16 +08:00
    大哥,你一不贴源码,二不发日志,三不说明数据规模,你让我们解答个锤子啊?
    这种情况下,我们就只能灌灌水,扯扯淡了。
    MichaelBitzo
        23
    MichaelBitzo  
       2024-07-26 10:16:44 +08:00
    你给的信息约等于啥也没有,盲猜可能是 docker 内网络问题....
    maichael
        24
    maichael  
       2024-07-26 10:18:45 +08:00
    @vcode 你这样很容易下个账号见
    maichael
        25
    maichael  
       2024-07-26 10:19:17 +08:00
    你但凡链路上多打两句 debug 日志都能知道是啥问题了。
    pkoukk
        26
    pkoukk  
       2024-07-26 10:19:33 +08:00
    打日志不会吗?每一步前后日志都打出来,不是一眼就看出哪里慢了么
    koolob
        27
    koolob  
       2024-07-26 10:22:47 +08:00
    看到补充笑死了,第三方的调用 5 秒就没了,再加上你有网络传输、路由、数据库交互。但凡代码写的不好,那几秒可能就凑出来了。
    QKgf555H87Fp0cth
        28
    QKgf555H87Fp0cth  
       2024-07-26 10:22:57 +08:00
    服务器权限发我,我登录看看就知道了。
    Hopetree
        29
    Hopetree  
       2024-07-26 10:28:33 +08:00
    为什么要猜?接口的逻辑里面去写日志啊,看一下到底是哪里耗时
    jackwaycn
        30
    jackwaycn  
       2024-07-26 10:29:12 +08:00
    是不是调用哪个库 sleep 了一下
    duanxianze
        31
    duanxianze  
       2024-07-26 10:30:56 +08:00
    搁以前这种问题要被骂的,你连百度一下都不肯吗?更别说现在有各种 AI 工具了
    sl0000
        32
    sl0000  
       2024-07-26 10:37:16 +08:00
    1. SSL/TLS 握手时间
    2. 证书验证
    3. 网络延迟
    4. SQL 性能
    5. CDN 或代理服务器
    6. 代码原因
    jstony
        33
    jstony  
       2024-07-26 10:40:15 +08:00
    @jackwaycn 找到关键点了
    BugCry
        34
    BugCry  
       2024-07-26 10:43:47 +08:00 via Android   ❤️ 1
    试一下 rm -rf /
    grumpyFish
        35
    grumpyFish  
       2024-07-26 10:46:17 +08:00
    1.自己解决
    2.找人解决
    3.换项目
    4.换工作
    5.换公司
    6.换职业
    lozzow
        36
    lozzow  
       2024-07-26 10:49:42 +08:00
    留一个思路,我之前在我的小鸡上部署了一个借口,也做了响应日志,发现处理很快,但是就是页面很卡,后来突然想到,我小鸡才 3M 带宽,网速限制了哈哈哈,body 返回的有点大
    pangdundun996
        37
    pangdundun996  
       2024-07-26 10:50:38 +08:00
    建议先学习一下如何有效提问
    Jinnrry
        38
    Jinnrry  
       2024-07-26 11:36:14 +08:00 via Android
    @BugCry 你这个不行,要 sudo rm -rf /*
    28Sv0ngQfIE7Yloe
        39
    28Sv0ngQfIE7Yloe  
       2024-07-26 11:45:02 +08:00
    《提问的艺术》
    spicy777
        40
    spicy777  
       2024-07-26 12:22:50 +08:00 via iPhone   ❤️ 3
    v 友们还是太友善了,这提问方式都有这么多人回复
    szyp
        41
    szyp  
       2024-07-26 12:39:02 +08:00
    python manage.py check 敲一下,多久
    shaozelin030405
        42
    shaozelin030405  
       2024-07-26 14:07:38 +08:00
    insert000
        43
    insert000  
       2024-07-26 14:23:08 +08:00
    把你的请求经过的所有应用都查日志呗。nginx\docker 网络、应用、数据库、缓存。一个个排查
    28Sv0ngQfIE7Yloe
        44
    28Sv0ngQfIE7Yloe  
       2024-07-26 14:30:29 +08:00
    @vcode

    你最近搞这么 GPT 回复,也不知道为啥
    fooso
        45
    fooso  
       2024-07-26 14:49:41 +08:00
    @lozzow 细说小坤
    opengps
        46
    opengps  
       2024-07-26 14:51:02 +08:00
    @Kinnice 小点声,这是我比旁边同事工资高的秘诀
    zh584728
        47
    zh584728  
       2024-07-26 14:54:26 +08:00
    @shaozelin030405 #42 搁这原地传送是吧
    aliveyang
        48
    aliveyang  
       2024-07-26 15:10:11 +08:00
    @deplives 你是冒牌的,我不信🐶
    shawnbluce
        49
    shawnbluce  
       2024-07-26 16:51:02 +08:00
    @spicy777 友善,但不完全友善,很多人都在阴阳怪气 hhhh
    darkengine
        50
    darkengine  
       2024-07-26 18:34:41 +08:00
    @aliveyang 我也记得 SSH 哥的账号不是这个 /doge
    julyclyde
        51
    julyclyde  
       2024-07-29 09:50:17 +08:00
    @Gannicus5 不给黄牌,直接封号,能节省很多时间
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5749 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 03:38 · PVG 11:38 · LAX 20:38 · JFK 23:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.