最近几天经常发现访问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 去看哪个目录占用的比较大。这样来排查占用空间比较大的文件。
五、磁盘满只是导致该问题的一个方面。其实对于这种组件较多系统,容易产生单点故障的问题。对于系统的资源整体监控是解决该问题的一个办法。另外对于日志的生成,需要自动定时的清理 。当然具体使用的怎么清理格式我们后续会继续讨论。
相关推荐
3. `uwsgi编译截图.png`: 可能显示了编译或安装uWSGI时的终端输出,对于排查问题或理解编译过程非常有帮助。 4. `uwsgi文件目录.png`: 该图可能展示了uWSGI在系统中的文件结构,这对于了解uWSGI的安装位置和依赖关系...
同时,确保正确设置日志记录,以便于问题排查和性能分析。 uwsgi的灵活性和强大功能使其成为Django部署的首选,它能适应各种规模的项目,从小型个人博客到大型企业级应用。了解并熟练掌握uwsgi的配置和使用,对于...
8. uwsgi 的版本问题:uwsgi 有多个版本,例如 uwsgi0、uwsgi1 等。不同的版本可能有不同的安装命令和解决方法。 9. uwsgi 的配置文件:uwsgi 的配置文件通常为 uwsgi.ini,用于配置 uwsgi 的各种参数,例如监听...
查看相关日志文件,如Nginx的access.log和error.log,uWSGI的log,以及服务器的系统日志,通常能帮助定位并解决问题。 总结,阿里云部署Flask应用涉及多个环节,包括环境配置、应用开发、服务器设置、配置文件编写...
本篇将详细讲解如何在Linux CentOS系统上,利用离线模式部署uwsgi和nginx来支持Django项目的运行。 首先,uwsgi是一个高效且可扩展的Python应用服务器,它允许我们将Python应用程序(如Django)作为服务运行。uwsgi...
2. **进程管理**:它能自动管理应用程序的进程,如启动、监控、重启和热更新,确保服务的稳定运行。 3. **缓存**:uwsgi内置了内存缓存系统,可以缓存动态生成的内容,提高响应速度。 4. **异步模式**:uwsgi支持...
uwsgi配置uwsgi配置uwsgi配置uwsgi配置uwsgi配置uwsgi配置uwsgi配置
《深入理解uWSGI:构建高效稳定的Web服务》 uWSGI是一个强大的、可扩展的Web服务器,专为处理Python应用程序而设计。标题中的"uWSGI-2.0.19.1.tar.gz"表明这是一个uWSGI的源码包,版本号为2.0.19.1,通常用于手动...
从给定的文件内容中我们可以看出,文档中涵盖了大量的uWSGI学习资料,包括组件的介绍,安装和配置指南,常见问题解答以及最佳实践和问题注意事项。它还包含了对uWSGI支持的语言和平台的介绍,如Python、Perl、Ruby和...
- 确保Apache、uWSGI和Django的配置文件正确无误,避免权限和路径问题。 8. **测试与调试**: - 启动Apache和uWSGI服务,访问配置的域名或IP+端口测试Web应用是否正常运行。 - 如遇到问题,检查日志文件,如...
如果在配置过程中遇到问题,可以查看日志文件(如`/var/log/nginx/error.log`和`/var/log/uwsgi/app.log`)获取错误信息。记住,安全是关键,确保遵循最佳实践,比如限制不必要的网络访问,使用HTTPS等。 通过这种...
- 重启Nginx服务使配置生效: `sudo service nginx restart` --- ### 总结 本文档详细介绍了如何使用Django+Nginx+Uwsgi搭建Web服务器的过程。首先安装了Python环境,接着安装了MySQL客户端用于数据库操作,然后是...
4. **信号和管理工具**:uwsgi提供了多种信号来控制和管理服务,如重启、停止、暂停等,还有uwsgi命令行工具方便进行配置和管理。 5. **自动代码更新**:uwsgi支持热更新,可以在不中断服务的情况下更新应用代码。 ...
Ubuntu 12.04 下安装 Nginx、Python、uWSGI 和 Django 的步骤 在本文中,我们将介绍如何在 Ubuntu 12.04 环境下安装 Nginx、Python、uWSGI 和 Django。这些技术栈组合是非常流行的 Web 应用程序开发环境。 一、...
在本文中,我们将探讨如何在腾讯云服务器上部署Django应用程序,同时解决SVG文件无法显示的问题。我们将使用Django、Nginx、uWSGI和SimpleUI这些技术,并且会详细解释每个组件的作用以及配置过程。 首先,Django是...
这有助于集中管理日志信息,便于问题排查和监控。 ### 总结 通过上述解析,我们可以看到`uwsgi.ini`配置文件中的每一项都具有其特定的功能,共同作用于Python Web应用的高效、稳定运行。合理配置这些参数不仅可以...