最近几天经常发现访问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 去看哪个目录占用的比较大。这样来排查占用空间比较大的文件。
五、磁盘满只是导致该问题的一个方面。其实对于这种组件较多系统,容易产生单点故障的问题。对于系统的资源整体监控是解决该问题的一个办法。另外对于日志的生成,需要自动定时的清理 。当然具体使用的怎么清理格式我们后续会继续讨论。
相关推荐
uwsgi配置uwsgi配置uwsgi配置uwsgi配置uwsgi配置uwsgi配置uwsgi配置
基于Linux centOS通过nginx与uwsgi离线部署django项目所需要的资源。
uwsgi和mingw打包下载
如果有什么问题可以留言,将错误的解决方法分享给大家,实现阿里云部署flask程序nginx+uwsgi及出现的问题,按照流程部署成功
自己写的一个uwsgi.ini配置。自己写的一个uwsgi.ini配置。自己写的一个uwsgi.ini配置。自己写的一个uwsgi.ini配置。
Python2.7 uwsgi flask virtualenv 环境搭建,基于centos 系统,参照了一些其他的文章。
Ubuntu12.04 nginx python uwsgi Django安装步骤
nginx+uwsgi+python架构
django+nginx+uwsgi服务器搭建手册
详细介绍python+django+nginx+uwsgi配置过程,1. Apache: 世界使用排名第一的Web服务器 2. Nginx: 轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器 3. nginx 做为代理服务器:负责静态资源...
全面的uWSGI的学习文档,可惜是英文版的。对uWSGI有部分疑问是,可以参考。如果专业英语强,值得认真阅读
uwsgi-2.0.16-1.el7.x86_64.rpm for centos7uwsgi-2.0.16-1.el7.x86_64.rpm for centos7uwsgi-2.0.16-1.el7.x86_64.rpm for centos7
Nginx+Uwsgi+Django(python3)+Vue部署,一步步实现。网上找了N多篇文章都没成功,特意记录,以免其他同学踩坑
uWSGI服务器作为支持服务器,是用来服务nginx的,nginx将请求的动态文件交给uWSGI进行处理。uWSGI实现了uwsgi、wsgi和http协议,uwsgi协议是uWSGI自定义的协议,定义的是框架(django)和服务器对接的接口。
python 的uwsgi.ini配置。
uWSGI是一个Web服务器,它...Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。
uwsgi需要手动安装的同学请下载,原生安装文件,无病毒,无木马。 厉害的东西分享给大家 厉害的东西分享给大家 厉害的东西分享给大家 厉害的东西分享给大家 厉害的东西分享给大家
在centos环境下部署nginx+django+uwsgi
Centos+Django+Uwsgi+Nginx(所有软件包,包括rpm软件包和pip包)。uwsgi 2.0.19.1,Django3.1.2 ,Python3.6.5,mysql5.7,nginx1.18.0
最近工作中遇到一个问题,在把 Flask 写的应用通过 Supervisor+uWSGI 部署到正式服务器上时,出现了这样的错误: Unable to print the message and arguments – possible formatting error. 或者 ...