DailyNotes
4 subscribers
92 photos
2 files
209 links
Download Telegram
不重用 WaitGroup。新建一个 WaitGroup 不会带来多大的资源开销,重用反而更容易出错。保证所有的 Add 方法调用都在 Wait 之前。不传递负数给 Add 方法,只通过 Done 来给计数值减 1。不做多余的 Done 方法调用,保证 Add 的计数值和 Done 方法调用的数量是一样的。不遗漏 Done 方法的调用,否则会导致 Wait hang 住无法返回。
Forwarded from Jiajun的编程随想
StackOverflow出的REST api最佳实践: https://jiajunhuang.com/sharing#472
一台 Linux 机器上的进程总数目是有限制的。如果超过这个最大值,那么系统就无法创建出新的进程了,比如你想 SSH 登录到这台机器上就不行了。这个最大值可以我们在 /proc/sys/kernel/pid_max 这个参数中看到。 #linux
DailyNotes
一台 Linux 机器上的进程总数目是有限制的。如果超过这个最大值,那么系统就无法创建出新的进程了,比如你想 SSH 登录到这台机器上就不行了。这个最大值可以我们在 /proc/sys/kernel/pid_max 这个参数中看到。 #linux
Linux 内核在初始化系统的时候,会根据机器 CPU 的数目来设置 pid_max 的值

比如说,如果机器中 CPU 数目小于等于 32,那么 pid_max 就会被设置为 32768(32K);如果机器中的 CPU 数目大于 32,那么 pid_max 就被设置为 N*1024 (N 就是 CPU 数目)

#linux
在前面 Linux 进程状态的介绍里,我们知道了,僵尸进程是 Linux 进程退出状态的一种。从内核进程的 do_exit() 函数我们也可以看到,这时候进程 task_struct 里的 mm/shm/sem/files 等文件资源都已经释放了,只留下了一个 stask_struct instance 空壳。 #linux
当多个容器运行在同一个宿主机上的时候,为了避免一个容器消耗完我们整个宿主机进程号资源,我们会配置 pids Cgroup 来限制每个容器的最大进程数目。

也就是说,进程数目在每个容器中也是有限的,是一种很宝贵的资源。

既然进程号资源在宿主机上是有限的,显然残留的僵尸进程多了以后,给系统带来最大问题就是它占用了进程号。

这就意味着,残留的僵尸进程,在容器里仍然占据着进程号资源,很有可能会导致新的进程不能运转。#linux
父进程在创建完子进程之后就不管了,这就是造成子进程变成僵尸进程的原因。 #linux
所以,在 Linux 中的进程退出之后,如果进入僵尸状态,我们就需要父进程调用 wait() 这个系统调用,去回收僵尸进程的最后的那些系统资源,比如进程号资源。 #linux