zoukankan      html  css  js  c++  java
  • 服务器调优原理

    1、CPU

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

        CPU调度队列

          0-139个优先级队列

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

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

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

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

    2、内存     

      内存的刷写时间

      内存查看的时间

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

    3、硬盘

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

      

    4、网络

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

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

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

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

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

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

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

        

        

  • 相关阅读:
    linux c++ 实现http请求
    pip 换源
    Web API接口
    DRF框架知识总览
    jq+bs插件
    element-ui插件
    axios插件
    前端存储数据汇总
    Vuex插件
    全局配置css和js
  • 原文地址:https://www.cnblogs.com/python-way/p/6210443.html
Copyright © 2011-2022 走看看