`
wangleide414
  • 浏览: 606443 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

uwsgi重启问题定位

 
阅读更多

     

      最近几天经常发现访问webserver (scancenter)有异常,有时慢有时快。

 

定位思路:后台架构使用nginx 作为反向代理,uWsgi做为web服务器,项目使用django框架。基本上的请求流程是: client--->nginx---->uwsgi----->django

 

 

一、先看nginx的access.log 

      一般在/usr/local/nginx/log/目录下。当然如果还找不到就locate access.log一下就能找到了。

     没有太大异常,只是发现一些请求时间比较长。达到300秒。具体的日志含义可以在nginx.conf看到。

 

         

      

二、再查看uwsgi的log

 

           

 

       发现很多子进程在不停的重启。

       常理判断300秒是有问题的。查看uwsgi的

        配置。发现uwsgi 配置的超时时间是300.一个请求300s肯定是有问题的。因为等待时间超过了配置的300s。所以导致了重启。
      

        

 

三、uwsgi配置中http_timeout表示设置内部http的socket超时时间,如果超过这个时间没有响应就会重启该子进程

 

       这时候主要依据对业务的熟悉程度,熟悉的话 可以知道/api/communicat/command 这个是要和其他组件交互的,所以直接去看那台组件是否正常运行。

       如果不熟悉的话其实也有办法。

 

      (1)、cd /proc/xxx/fd 查看对应的日志

      (2)、使用strace -p uwsgi_pid 来观察这个进程到底在干啥勒。我们使用第二种来观察一下,

        

 

      当然你要strace 的是uwsgi的子进程,如果太多的话,可以配置只启用一个uwsgi进程,这样就可以容易定位了。

      我们看到它在recvfrom 一个文件描述符,打开cd /proc/uwsgi_pid/fd && ls -lt 看到对应的描述符aaa。

 

      继续使用 lsof -p uwsgi_pid | grep aaa,可以看到它是在请求这台机器,并且一直在等待它。如下图:

 

              

 

 

四、接下来就清楚了。登录这个阻塞请求的机器,看看是否有异常。 df -h 或者是free -m 。我经常发现的问题是磁盘100%了。一般情况下是/var/log/目录中有大的文件导致的。

 

       当然不熟悉的话,可以先看df 下,看看哪个分区是满的。然后一层一层去执行 du -sm * | sort -n 去看哪个目录占用的比较大。这样来排查占用空间比较大的文件。

 

五、磁盘满只是导致该问题的一个方面。其实对于这种组件较多系统,容易产生单点故障的问题。对于系统的资源整体监控是解决该问题的一个办法。另外对于日志的生成,需要自动定时的清理          。当然具体使用的怎么清理格式我们后续会继续讨论。

 

 

         

  • 大小: 26.5 KB
  • 大小: 8.7 KB
  • 大小: 3.1 KB
  • 大小: 12.7 KB
  • 大小: 23 KB
分享到:
评论

相关推荐

    uWSGI的windows编译版本,内有编译截图,运行截图。

    3. `uwsgi编译截图.png`: 可能显示了编译或安装uWSGI时的终端输出,对于排查问题或理解编译过程非常有帮助。 4. `uwsgi文件目录.png`: 该图可能展示了uWSGI在系统中的文件结构,这对于了解uWSGI的安装位置和依赖关系...

    uwsgi-2.0.18.tar.gz

    同时,确保正确设置日志记录,以便于问题排查和性能分析。 uwsgi的灵活性和强大功能使其成为Django部署的首选,它能适应各种规模的项目,从小型个人博客到大型企业级应用。了解并熟练掌握uwsgi的配置和使用,对于...

    window安装uwsgi1

    8. uwsgi 的版本问题:uwsgi 有多个版本,例如 uwsgi0、uwsgi1 等。不同的版本可能有不同的安装命令和解决方法。 9. uwsgi 的配置文件:uwsgi 的配置文件通常为 uwsgi.ini,用于配置 uwsgi 的各种参数,例如监听...

    实现阿里云部署flask程序nginx+uwsgi及出现的问题.zip

    查看相关日志文件,如Nginx的access.log和error.log,uWSGI的log,以及服务器的系统日志,通常能帮助定位并解决问题。 总结,阿里云部署Flask应用涉及多个环节,包括环境配置、应用开发、服务器设置、配置文件编写...

    离线部署uwsgi和nginx所需包

    本篇将详细讲解如何在Linux CentOS系统上,利用离线模式部署uwsgi和nginx来支持Django项目的运行。 首先,uwsgi是一个高效且可扩展的Python应用服务器,它允许我们将Python应用程序(如Django)作为服务运行。uwsgi...

    uwsgi+mingw.rar

    2. **进程管理**:它能自动管理应用程序的进程,如启动、监控、重启和热更新,确保服务的稳定运行。 3. **缓存**:uwsgi内置了内存缓存系统,可以缓存动态生成的内容,提高响应速度。 4. **异步模式**:uwsgi支持...

    uwsgi配置

    uwsgi配置uwsgi配置uwsgi配置uwsgi配置uwsgi配置uwsgi配置uwsgi配置

    uWSGI-2.0.19.1.tar.gz

    《深入理解uWSGI:构建高效稳定的Web服务》 uWSGI是一个强大的、可扩展的Web服务器,专为处理Python应用程序而设计。标题中的"uWSGI-2.0.19.1.tar.gz"表明这是一个uWSGI的源码包,版本号为2.0.19.1,通常用于手动...

    uWSGI 2.0的PDF学习资料

    从给定的文件内容中我们可以看出,文档中涵盖了大量的uWSGI学习资料,包括组件的介绍,安装和配置指南,常见问题解答以及最佳实践和问题注意事项。它还包含了对uWSGI支持的语言和平台的介绍,如Python、Perl、Ruby和...

    Apache+uWSGI+Django+Mysql环境配置手册

    - 确保Apache、uWSGI和Django的配置文件正确无误,避免权限和路径问题。 8. **测试与调试**: - 启动Apache和uWSGI服务,访问配置的域名或IP+端口测试Web应用是否正常运行。 - 如遇到问题,检查日志文件,如...

    centos下使用Nginx+uWsgi部署Python Flask项目的详细配置

    如果在配置过程中遇到问题,可以查看日志文件(如`/var/log/nginx/error.log`和`/var/log/uwsgi/app.log`)获取错误信息。记住,安全是关键,确保遵循最佳实践,比如限制不必要的网络访问,使用HTTPS等。 通过这种...

    django+nginx+uwsgi服务器搭建手册(外).docx

    - 重启Nginx服务使配置生效: `sudo service nginx restart` --- ### 总结 本文档详细介绍了如何使用Django+Nginx+Uwsgi搭建Web服务器的过程。首先安装了Python环境,接着安装了MySQL客户端用于数据库操作,然后是...

    uwsgi-2.0.21

    4. **信号和管理工具**:uwsgi提供了多种信号来控制和管理服务,如重启、停止、暂停等,还有uwsgi命令行工具方便进行配置和管理。 5. **自动代码更新**:uwsgi支持热更新,可以在不中断服务的情况下更新应用代码。 ...

    Ubuntu12.04 nginx python uwsgi Django安装步骤

    Ubuntu 12.04 下安装 Nginx、Python、uWSGI 和 Django 的步骤 在本文中,我们将介绍如何在 Ubuntu 12.04 环境下安装 Nginx、Python、uWSGI 和 Django。这些技术栈组合是非常流行的 Web 应用程序开发环境。 一、...

    腾讯云部署Django+Nginx+uWSGI+SimpleUI.解决 .svg文件不能显示问题

    在本文中,我们将探讨如何在腾讯云服务器上部署Django应用程序,同时解决SVG文件无法显示的问题。我们将使用Django、Nginx、uWSGI和SimpleUI这些技术,并且会详细解释每个组件的作用以及配置过程。 首先,Django是...

    python uwsgi配置

    这有助于集中管理日志信息,便于问题排查和监控。 ### 总结 通过上述解析,我们可以看到`uwsgi.ini`配置文件中的每一项都具有其特定的功能,共同作用于Python Web应用的高效、稳定运行。合理配置这些参数不仅可以...

Global site tag (gtag.js) - Google Analytics