nice-ni 耗光cpu

可以看到 低优先级的进程 暂用了比较高的CPU时间。
top 命令中可以看到 NI 为19, 其优先级最低 但是使用cpu 最高。
说明这个进程需要经行优化了,
通过gdb 发现此进程一直都在处理报文,写缓存。
由于使用了dpdk, 此进程用来接收dpdk的报文数据解析。此时流量大约3-5g。
报文量多。此处逻辑 需要调整。以及进程优先级也需要调整
顺便说一说 http server端的优化
- TCP的keepalive
维护与client的防火墙的活跃网络包
检测实际断掉的连接
net.ipv4.tcp_keepalive_time=7200 发送心跳周期
net.ipv4.tcp_keepalive_intvl=75 探测包发送间隔
net.ipv4.tcp_keepalive_probes=9 探测包重试次数
- 减少关闭连接的timewait
- fin_wait1状态
net.ipv4.tcp_orphan_retries=0 发送FIN报文的重试次数,0相当于8
- fin_wait2状态
net.ipv4.tcp_fin_timeout=60 保持在FIN_WAIT_2的状态时间
- time_wait状态
net.ipv4.tcp_tw_reuse=1 开启后client端仍可以使用处于TIME_WAIT的端口,由于时间戳的存在,操作系统可以设置net.ipv4.tcp_timestamps=1拒绝迟到的报文
net.ipv4.tcp_max_tw_buckets TIME_WAIT的连接数量
net.ipv4.tcp_tw_recycle=0 开启后client和server都可以使用TIME_WAIT的端口,无法避免报文延迟和重复造成的混乱
lingering延迟关闭TCP连接
当server主动关闭连接的时候,调用close状态,当client仍发送数据到缓冲区,服务仍会给client发送RST包关闭连接,导致了client收到了RST而忽略了http的response
server端的配置
lingering_close off为关闭,on为由server判断是否使用
lingering_time 30s 功能启用时,最长的读取用户内容的时长,到达后立刻关闭
lingering_timeout 5s 检测client是否仍有请求内容到达,若超时后扔没有数据到达,则立刻关闭连接
读写超时通过RST立刻释放连接,代替四次握手
- 应用层协议优化
TLS和SSL握手优化的ssl_session_cache off
off为不使用,http server告诉client不使用
none为不使用
builtin为使用,当一个client两次连接都命中一个worker才生效
shared:name:size为使用,定义共享内存
Ticket会话验证票证
http server 会将会话的session作为ticket加密发送给client,client下次发起TLS连接的带上ticket,由nginx解密验证恢复会话,但是这样破换了nginx的TSL/SSL的安全机制,有安全风险,需要经常更换
- HTTP长连接
可以减少握手次数,减少并发连接消耗服务器资源,降低TCP拥塞控制
- 压缩包体
google pertools分析nginx
gpertools
- 文本展示 pprof --text
- 图形展示 pprof --pdf 需要依赖graphviz和libunwind
文本结果
2 0.9% 51.3% 166 73.5% ngx_epoll_process_event
1 0.4% 96.5% 2 0.9% ngx_open_and_stat_file
每统计周期为10ms
- 当前函数执行总共花费的统计周期
- 当前函数执行时间的百分比
- 当前函数及其之前函数执行时间的百分比
- 当前函数及其所调用函数消耗的统计周期总和
- 当前函数及其所调用函数执行时间总和的百分比
- 函数名
stub_status模块监控
- Active connections 当前client与Nginx间的TCP连接数,等于Reading+Writing+Waiting
- accept 从nginx启动,与client建立的连接数
- handler 从nginx启动,处理过的client连接数,如果没有超出worker_connections,应该是与accept相同
- requests 从nginx启动,处理过的client请求数,由于keepalive,所以会大于handler
- Reading 正在读取HTTP请求头的连接总数,接收完Reading就是Writing状态了
- Writing 正在向Client发送响应的连接总数
- Waiting 当前空闲的keepalive数量
nice-ni 耗光cpu的更多相关文章
- Linux 用 ps 與 top 指令找出最耗費 CPU 與記憶體資源的程式最占cpu的进程
Linux 用 ps 與 top 指令找出最耗費 CPU 與記憶體資源的程式 2016/12/220 Comments ######### ps -eo pid,ppid,%mem,%cpu,cmd ...
- Windows Server 2008 R2 服务器内存使用率过高几乎耗光
系统环境: Windows Server 2008 R2 Enterprise 搭建有 web服务器(iis) 和 文件服务 问题描述: Windows Server 2008 R2系统内存耗光 ...
- gitlab访问慢,出现502,特别卡,耗内存cpu解决办法
前言 浏览器访问gitlab的web页面,发现非常慢,并且很容易出现502问题.其中一个原因就是8080端口被tomcat占用,前面一篇已经更换了端口,但还是很慢.后来搜了下,原因是gitlab占用内 ...
- composer安装包的时候触发PHP fatal error,提示允许的内存耗光
在composer require之前加COMPOSER_MEMORY_LIMIT=-1
- 2、每日复习点--ConcurrentHashMap vs HashMap vs LinkedHashMap vs HashTable
HashMap: 查询和插入速度极快,但是线程不安全,在多线程情况下在扩容的情况下可能会形成闭环链路,耗光cpu资源. LinkedHashMap: 基本和HashMap实现类似,多了一个链表来维护元 ...
- while 1要小心
之前判断一个接口的返回,一定约定好了是返回retcode 1或者retcode 0,就用的这个判断,但是接口挂了的时候,一直返回未登录,找了很长时间为什么cpu一直消耗那么高. 使用wihle 1时候 ...
- [转]如何根据cpu的processor数来确定程序的并发线程数量
原文:http://blog.csdn.net/kirayuan/article/details/6321967 我们可以在cat 里面发现processor数量,这里的processor可以理解为逻 ...
- [进程管理]Load和CPU利用率是如何算出来的
本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://www.penglixun.com/tech/system/how_to_ca ...
- 线程池大小设置,CPU的核心数、线程数的关系和区别,同步与堵塞完全是两码事
线程池应该设置多少线程合适,怎么样估算出来.最近接触到一些相关资料,现作如下总结. 最开始接触线程池的时候,没有想到就仅仅是设置一个线程池的大小居然还有这么多的学问,汗颜啊. 首先,需要考虑到线程池所 ...
随机推荐
- 第一个月多测师讲解__项目讲解以及注意事项(肖sir)
一.目的讲解流程:(讲述业务时长10-15分钟为宜)1.自我介绍礼貌用语,姓名,籍贯,学校,个人技能,经验,表现,兴趣爱好等 ,1分钟 ,谢谢2.介绍项目的名字 ,项目的背景,(涉及什么架构)3.对项 ...
- c# 误区系列(一)
前言 整理很早以前认为的一些误区,准备整理一个系列.新手可以看下,然后大佬指点一下是否哪些地方错了. 正文 值类型存在栈上,引用类型存在堆上 很多人认为用这句话来解释值类型和栈类型的区别,甚至有些文章 ...
- hugo网站配置聊天
date: "2020-10-18T22:11:05+08:00" title: "hugo网站配置聊天" tags: ["dao"] ca ...
- spring boot:shardingsphere+druid整合seata分布式事务(spring boot 2.3.3)
一,shardingshpere为什么要整合seata? 分库分表是数据库扩展中最常用的处理方法, shardingshpere作为使用最广泛的分表中间件, 如果不支持分布式事务,则它的数据一致性就会 ...
- CentOS 6编译安装RabbitMQ
编译安装Python 下载python源文件 [root@localhost src]# tar -xzvf python-2.7.11.tar.gz [root@localhost src]# cd ...
- MVC单文件上传
前言 现在来写下最基础的单文件上传,完成后可以扩展成各种不同的上传方式 HTML <input id="Input_File" type="file" / ...
- eclipse 包与子包的视图显示方式切换
上图Package Presentation ---> Hierarchical(如下图显示父包与子包) 参考:https://zhidao.baidu.com/question/2205086 ...
- 数据结构(C++)——链栈
结点结构 typedef char ElemType; typedef struct LkStackNode{ ElemType data; LkStackNode *next; }*Stack,SN ...
- Java8新特性探索之Lambda表达式
为什么引入Lambda表达式? Lambda 表达式产生函数,而不是类. 在 JVM(Java Virtual Machine,Java 虚拟机)上,一切都是一个类,因此在幕后执行各种操作使 lamb ...
- Java学习的第三天
1.今天学了main函数具体的解读如 main函数关键字的意义 变量命名 2.在2.1当中的cmd命令实施失败,文件路径没有找到. 3.明天学习变量范围和注释阅读大道至简.