首页 > 代码库 > 服务器调优原理

服务器调优原理

1、CPU

    动态优先级:  内核自动检测占用cpu时间的进程,自动调整进程的优先级 
    手动优先级调整:调整nice值,但是内核也会再动态调整这些手动调整优先级高的进程

    CPU调度队列

      0-139个优先级队列

    内核从优先级由高到低挨个扫描队列,

         调度策略:先到先得,轮流,完全公平(CFS),

       内核调度实时进程:先到先出 或者 轮流   

       调度用户级别的进程:完全公平

2、内存     

  内存的刷写时间

  内存查看的时间

  释放已使用内存页以及释放slab小文件系统

 

3、硬盘

  硬盘中的数据是做成文件系统,挂载后访问。每一个文件在访问时需要更新访问时间戳,当非常频繁的被访问时关闭访问时间戳有助于io的提升

  

4、网络

    当刚刚接进来的链接,需要分析一些值如谁来请求的,要请求到谁,我们又怎么知道一共有多少个请求。所以需要在内存中使用特定内存数据结构来维持每个请求,这就是内核需要建立套接字文件,内核将这个文件请求内容转交给用户空间的某一个进程,这个进程处理完请求后还要讲结果转交给内核,内核还需要重新封装报文,返还给请求者。完成追踪就是靠这个文套接字文件维持。

    为了公平,单个进程所能打开的最大的文件描述符是有上限的,访问量高的web服务或者代理服务器,就需要最大化所能打开的文件描述符的数量。

    内核的接受缓冲:http请求在被内核转交到用户空间之前需要维持在内核内存中保存。

    内个进程也有自己的接受缓冲区。当调整某一个程序的最大并发后,如果到达上限,再来的请求就需要内核开辟一个内存来维持一段时间,这就叫后援队列。

    TCP握手,等待发起一方第三次握手,此时需要在内存中保持这个会话。大量的这个请求会导致队列耗尽,正常连接无法连接,拒绝服务。适当调短这个请求

    TCP断开,一般来讲是客户端发起断开,但是在保持连接时服务器设置超时时间,超时后服务器发起断开。 

    当一个连接来了,需要申请内存保存这些连接,当连接断开了,要释放这些内存,大量的操作也会占用系统资源,所以我们可以考虑不释放,重用这些文件。来减少内存的分配和回收,提升网路io性能。

    

    

 

服务器调优原理