现象:

Nginx日志在凌晨(2~9点) 中出现了大量499状态码的请求,9点钟以后几乎没有再出现499的状态码

解决:

早上来了业务部门通知让查看系统是否运行正常,查到了凌晨 Nginx 日志中出现了大量 499 的日志信息,上班以后都正常了,一开始没有头绪。就去问了运维,运维说凌晨的时候MySQL 备份磁盘满了,程序报错了,以为找到原因了,接下来就是把丢失的数据补充进去。

结果下午的时候又出现了499 的报错信息,这个时候查看了一下 CPU,几乎快满了,然后运维帮忙看了磁盘读写比例很高,也就是一直在读写磁盘占用了大量的CPU。第一时间分析以为是业务日志信息写入磁盘导致的CPU很高,业务里面是一条条写日志的,自己想可不可以批量写入磁盘,减少io请求,增加吞吐量(ps: 这个时候已经跑偏了)。

下午的时候看到 docker 中有一个进程CPU 占用很高,自己感觉正常就没有在意。

晚上下班了以后,又分析了一波,既然docker的CPU占用这么高,怎么看docker的资源消耗呢?

使用 docker stats

查看了docker 资源的消耗,发现有一个进程占用了 docker 百分之90多的CPU,进行这个容器中查看了一下这个进程的命令,是在读取一个文件,看了一下目录里面这个文件并不存在,自己确认了一下,然后就把这个容器关掉了。关掉以后 CPU占用从 60多 降到了30多,也就是这个空转的进程占用了大量的CPU消耗。

复盘:

Nginx 499 错误码 4xx 开头都是客户端报错

维基百科定义:

499 ClientClosed Request(Nginx):

Used in Nginx logs to indicate when the connection has been closed by client while the server is still processing itsrequest, making server unable to send a status code back。

服务器返回http头之前,客户端就提前关闭了连接,也就是说明是我们服务端处理的速度比较慢

那么下一次如何更好的定位到这个信息呢?

1.要了解top 命令的使用以及参数信息

负载:时间,登录用户数,系统平均负载

进程:运行,睡眠,停止,僵尸

cpu: 用户态、核心态、NICE、空闲、等待IO、中断等

内存: 总量、已用、空闲(系统角度),缓冲,缓存

交换分区:总量、已用、空闲

任务区域默认显示:进程ID、有效用户、进程优先级、NICE值、进程使用的虚拟内存、物理内存和共享内存、进程状态、CPU 占用率、内存占用率、累计CPU时间、进程命令行信息。

在使用top 的时候使用c,查看执行的进程命令信息。

2.补充对基础知识的掌握,操作系统的使用和理解

参考文章:

服务器排障 之 nginx 499 错误的解决 https://blog.51cto.com/yucanghai/1713803

top linux 下的任务管理器 https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/top.html

Linux Performance Observability Tools

Nginx 499 排查到docker 中一个进程一直在空转的更多相关文章

  1. 服务器中一个进程kill不掉,如何处理?

    问题描述: 我们在服务器中有时候kill一个进程,会碰到死活杀不死的情况,那么有可能这个进程成为了一个僵尸进程,zombie状态.这种情况是这个进程释放了资源,但是没有得到父进程的确认. 可以使用命令 ...

  2. 理解Docker容器的进程管理

    摘要: Docker在进程管理上有一些特殊之处,如果不注意这些细节中的魔鬼就会带来一些隐患.另外Docker鼓励"一个容器一个进程(one process per container)&qu ...

  3. docker中的安全机制

    有时候我们需要容器具有更多的权限,像如操作内核模块,控制swap交换分区,挂载usb磁盘,修改mac地址等.所以我们今天进行docker的安全设定. 一.使用docker命令设置docker的安全机制 ...

  4. linux 中的进程wait()和waitpid函数,僵尸进程详解,以及利用这两个函数解决进程同步问题

    转载自:http://blog.sina.com.cn/s/blog_7776b9d3010144f9.html 在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / wait ...

  5. 一次docker中的nginx进程响应慢问题定位记录

    有个ft测试的环境,其中nginx使用docker发布的.测试用例是curl的时候,没有获得nginx的响应. docker ps CONTAINER ID IMAGE COMMAND CREATED ...

  6. 滚动 docker 中的 nginx 日志

    Nginx 自己没有处理日志的滚动问题,它把这个球踢给了使用者.一般情况下,你可以使用 logrotate 工具来完成这个任务,或者如果你愿意,你可以写各式各样的脚本完成同样的任务.本文笔者介绍如何滚 ...

  7. Docker: docker 启动一个Nginx容器

    本文演示从官方镜像仓库拉取一个nginx镜像并启动docker run -d –p 8800:80 nginx (同一个镜像,可以启动N个容器, 比如说,一个nginx服务,可以在这个docker主机 ...

  8. 用Docker搭建一个支持https的nginx代理服务

    用Docker搭建一个支持https的nginx代理服务 说明:本文所提的服务只是作者平常测试使用,可能含有未知bug或不成熟的解决方案,仅供参考,请不要用于正式环境,当然,使用过程中有任何问题欢迎提 ...

  9. 解决docker中使用nginx做负载均衡时并发过高时的一些问题

    # 解决docker中使用nginx做负载均衡时并发过高时的一些问题 1.问题产生原因: 由于通过nginx作为负载均衡服务,在访问并发数量达到一定量级时jmeter报错. nginx日志关键信息:a ...

  10. nginx中父子进程工作的主体函数

    依据Nginx(0.7.67版本号)的代码.对Nginx主要的进程创建,进程主体以及事件处理进行了简要的分析. 基本上,父进程(即主进程)一開始会初始化及读取配置.并载入各模块的功能,然后fork() ...

随机推荐

  1. 丢失的MD5-补全代码

    题目是一段代码,直接运行会报错: import hashlib for i in range(32,127): for j in range(32,127): for k in range(32,12 ...

  2. 利用队列的内置模块(deque)模拟 Linux 下的 tail 命令(输出文件中最后几行的内容)

    博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- from collections import deque def tai ...

  3. linux重启后,启动docker和docker对应的服务

    我的项目部署在docker上,linux关闭之后,项目要重启,在此做一个记录1.启动linux之后,执行docker images或者docker ps,如果出现下面的错误Cannot connect ...

  4. SDF Line相关公式推导

    SDF Line相关公式推导 线段是SDF形状的基元之一,可以被用来建模一些形状,比如昆虫的腿,植物的根茎等. 下面这篇文章介绍一下Line公式的推导,首先记住我们要求的变量,点到形状最近的距离. 那 ...

  5. 【C语言】转义字符及其对应英文

    对于很多人来说,用转义字符都是熟能生巧,而不清楚为什么是那样的转义字符,所以我在这列了一个表,翻译了其对应的英文. 转义字符分为一般转义字符.八进制转义字符.十六进制转义字符. 一般转义字符:\0. ...

  6. Windows 系统授权服务信息

    cmd 中输入命令 slmgr.vbs /dlv 后查看输出信息 据说,OEM和RETAIL可以正常升级到Windows10,并永久激活

  7. markdown常用命令行格式

    Markdown 主要命令(语法)如下: 标题 使用 # 号表示标题,# 的个数决定标题的级别: 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 段落 & 换行 直接输入文字形成段 ...

  8. python 关于__init__()方法的用法

    __init__()方法需要结合class一起来使用更加有效 关于__init__()的含义,查到解释是"负责对象的初始化",听起来挺懵逼的,还是结合实例来理解较好 直接看代码 c ...

  9. symfony4怎么切换到开发环境的问题

    1.根目录下有.env文件,约17行有这句: APP_ENV=dev  默认开发环境 prod为生产环境 2..env.local.php文件(如果有)会覆盖.env的配置

  10. DevEco Studio AI辅助开发工具两大升级功能 鸿蒙应用开发效率再提升

    随着搭载HarmonyOS 5的Pura X发布,鸿蒙生态进入快车道,各应用正在加速适配开发,越来越多开发者加入到鸿蒙应用开发浪潮中.为提升鸿蒙应用开发效率,华为前不久上线了首款开发HarmonyOS ...