1.top
load avg
它们的意思分别是1分钟、5分钟、15分钟内系统的平均负荷
https://blog.csdn.net/aaronychen/article/details/2142365

另外一篇介绍的也挺详细
https://blog.csdn.net/aaronychen/article/details/2142365

2.调度器理解
Go程序的初始化过程中有提到过,runtime开了一条后台线程,运行一个sysmon函数。这个函数会周期性地做epoll操作,同时它还会检测每个P是否运行了较长时间。

如果检测到某个P状态处于Psyscall超过了一个sysmon的时间周期(20us),并且还有其它可运行的任务,则切换P。

如果检测到某个P的状态为Prunning,并且它已经运行了超过10ms,则会将P的当前的G的stackguard设置为StackPreempt。这个操作其实是相当于加上一个标记,通知这个G在合适时机进行调度

链接:https://www.jianshu.com/p/469d0c7a7936

3.访问安全,XSS,CSRS
https://www.jianshu.com/p/64a413ada155
4.传输包的缓存
100Gb内容,100s传完,没有宽带上限,100ms 一次传递时间
5.第k大,到底是大顶堆还是小顶堆
最小堆,维护的前面最大的k个数
最大堆,维护的前面的最小的k个数
6.http 代号502 错误的网关
7.并发写两个http服务
8.awk 计算
9.其他协程异步通讯方式

connection := flag.Int("c", 200, "-c N")
        timeout := flag.Int("o", 5, "-o N")
        timeover := flag.Int("t", 5, "-t N")
        method := flag.String("m", "GET", "-m GET")
        url := flag.String("u", "http://127.0.0.1", "-u http://127.0.0.1")

        T := time.Tick(time.Duration(*timeover) * time.Second)
        var result1 chan string = make(chan string, 10)
        var result2 chan string = make(chan string, 10)
        t := time.Duration(*timeout) * time.Second
        Client := http.Client{Timeout: t}

        for i := 0; i < *connection; i++ {
            go func() {
                req, _ := http.NewRequest(*method, *url1, nil)
                resp, _ := Client.Do(req)
                defer resp.Body.Close()
                if resp.StatusCode == 200 {
                    b, _ := ioutil.ReadAll(resp.Body)
                    result1 <- string(b)
                }
            }()
        }

        for i := 0; i < *connection; i++ {
            go func() {
                req, _ := http.NewRequest(*method, *url2, nil)
                resp, _ := Client.Do(req)
                defer resp.Body.Close()
                if resp.StatusCode == 200 {
                    b, _ := ioutil.ReadAll(resp.Body)
                    result2 <- string(b)
                }
            }()
        }

        ans := ""

        for {
            x := <-result1
            y := <-result2


            if x == "" && y == "" {
                break
            }
            ans = append(ans,x)
            ans = append(ans,y)
        }
    }

https://blog.csdn.net/fyxichen/article/details/47355577

10.mysql 执行时间
show profile;
查看上次请求
图片说明
show profile for query 1;
查看第一次执行