首页 > 代码库 > 服务器调优原理
服务器调优原理
1、CPU
动态优先级: 内核自动检测占用cpu时间的进程,自动调整进程的优先级
手动优先级调整:调整nice值,但是内核也会再动态调整这些手动调整优先级高的进程
CPU调度队列
0-139个优先级队列
内核从优先级由高到低挨个扫描队列,
调度策略:先到先得,轮流,完全公平(CFS),
内核调度实时进程:先到先出 或者 轮流
调度用户级别的进程:完全公平
2、内存
内存的刷写时间
内存查看的时间
释放已使用内存页以及释放slab小文件系统
3、硬盘
硬盘中的数据是做成文件系统,挂载后访问。每一个文件在访问时需要更新访问时间戳,当非常频繁的被访问时关闭访问时间戳有助于io的提升
4、网络
当刚刚接进来的链接,需要分析一些值如谁来请求的,要请求到谁,我们又怎么知道一共有多少个请求。所以需要在内存中使用特定内存数据结构来维持每个请求,这就是内核需要建立套接字文件,内核将这个文件请求内容转交给用户空间的某一个进程,这个进程处理完请求后还要讲结果转交给内核,内核还需要重新封装报文,返还给请求者。完成追踪就是靠这个文套接字文件维持。
为了公平,单个进程所能打开的最大的文件描述符是有上限的,访问量高的web服务或者代理服务器,就需要最大化所能打开的文件描述符的数量。
内核的接受缓冲:http请求在被内核转交到用户空间之前需要维持在内核内存中保存。
内个进程也有自己的接受缓冲区。当调整某一个程序的最大并发后,如果到达上限,再来的请求就需要内核开辟一个内存来维持一段时间,这就叫后援队列。
TCP握手,等待发起一方第三次握手,此时需要在内存中保持这个会话。大量的这个请求会导致队列耗尽,正常连接无法连接,拒绝服务。适当调短这个请求
TCP断开,一般来讲是客户端发起断开,但是在保持连接时服务器设置超时时间,超时后服务器发起断开。
当一个连接来了,需要申请内存保存这些连接,当连接断开了,要释放这些内存,大量的操作也会占用系统资源,所以我们可以考虑不释放,重用这些文件。来减少内存的分配和回收,提升网路io性能。
服务器调优原理