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;
查看第一次执行

京公网安备 11010502036488号