平均负载
uptime
最后这三个值,分别代表在过去1分钟,5分钟,15分钟
平均活跃进程数
可以知道系统负载升高了,但具体是CPU还是I/O升高了,还不能确定.
psi
Facebook贡献给Linux内核一个psi工具,4.2以后的内核都有该命令.
最新版本在/proc/pressure下面,有cpu,io,memory三项
指数衰减平均值
内存优化
为什么内存池可以优化内存性能?
malloc分配小块内存时,基于brk(使用内存里的缓存,从缓存取出一小段,使用完了并不返回给系统,仍然放在内存里,下次用时可以直接用)实现;
分配大块内存时,使用mmap(内存映射)实现
快速定位磁盘I/O性能问题
iostat和sum命令,确定是否有I/O性能问题
pidstat和wimstat
为什么网络性能优化相对更难?
Linux到底支持多少并发连接?
c10k,c100k,c10m问题
怎样解决恼人的TIME_WAIT问题
三次握手比较简单, 而四处挥手,相对麻烦.在某些场景也可以合并为三次.
time_wait就是四次挥手时的一个中间状态
主动关闭连接的过程中,当主动关闭的一方发出syn包后,会进入time_wait状态..从time_wait到close状态之间有一个time_out,在内核中time_out是两个MSL,只有过了time_wait这个状态的TCP的socket,才会被内核回收
如果没有time_wait,将会有各种问题,如下:
对于被动关闭的一端,会是close_wait状态.只需要一个ack,就可以变成close状态了,相对来说要简单很多
即只有主动关闭连接那一方,才会出现time_wait状态
time_wait过多, 危害是每个time_wait会占用一个端口号和连接跟踪表,相对内存来说, 这两者数量都是有限的
解决办法:
修改内核中连接跟踪表的数量,改的大一点
减小time_out的值,使网络连接尽快释放
重用属于time_wait状态的TCP连接,可以开启tcp_reuse选项.
修改增大系统文件描述符的数量(socket也是一种文件描述符)
原文链接: https://dashen.tech/2010/03/02/Linux性能优化/
版权声明: 转载请注明出处.