woshidama323 / LearningGolang

1 stars 0 forks source link

中台定时任务故障排查跟踪 #9

Closed woshidama323 closed 2 years ago

woshidama323 commented 2 years ago

golang 调度研究

hell hello heh
os层 最大线程数量
https://stackoverflow.com/questions/344203/maximum-number-of-threads-per-process-in-linux
golang 最大线程数量 10000 
可以通过 runtime debug 包中的SetMaxThreads() 来设置  

创建的条件是,
当前的thread 如果被block 了 (比如在io等待)将会重新创建一个新的os层的thread 来继续工作
It will create a new thread once current one is blocked.
woshidama323 commented 2 years ago

qt线程解决

woshidama323 commented 2 years ago

参考资料

  1. https://developpaper.com/deep-decryption-of-the-scheduler-of-go-language/
  2. https://www.timqi.com/2020/05/15/how-does-gmp-scheduler-work/ 从图中可以看出这两个都是中国人写的,傲娇

再加一个参考文章 https://www.pefish.club/2020/05/18/Golang/1020Goroutine%E7%9A%84%E6%8A%A2%E5%8D%A0/

关于lockosthread的一个问题讨论 https://news.ycombinator.com/item?id=14472209

scheduler 调度器观察方法 debug中的字段描述意思

中文 https://www.luozhiyun.com/ 关于golang的调度器的分享

官方文档

 https://golang.org/s/go11sched
### 主要目的是了解,调度器的概念,GMP 以及相互之间的关系
### sysmon 
1. 用于处理 timer 如果没有被准时调度,sysmon协助保证被调度执行
2. 如果gc 没有在规定的2min还没被运行,将force run 
3. 监控系统情况 trace等工具看不到该thread

### value semantics 与pointer semantic的选择 
(根据变量类型来判断,如果是内置变量 如string int等 用value semantics )

func (harry htype) helloharry() {}
(如果是reference变量 如slice map interface 用value semantics )
(如果频繁被调用的,自定义的struct 等 可以考虑用pointer  )

unmarsh这类decode encode等操作是需要用pointer的 

### pointer的好处以及在frame中的部分 一个goroutine 会分配2kb的空间,如果需要扩大或者缩小 需要重新替换行的block of memory
### 逃逸分析确定 是否将数据 存入到heap中

###

### 需要继续消耗
https://medium.com/a-journey-with-go/go-what-does-a-goroutine-switch-actually-involve-394c202dddb7

这个人的一系列的文章 浏览完 
### 这个人的博客也建议阅读
https://www.luozhiyun.com/archives/439
woshidama323 commented 2 years ago

引申的一个问题

  1. 关于文档材料的管理 图 图源文件 其他格式的文件,
  2. 放在github上,并且

测试技巧

https://httpstat.us/

woshidama323 commented 2 years ago

目前因为qt的问题,已经解决乱码的问题