求教: Linux 为什么限制线程数?TCP 连接数等

2019-07-09 11:29:32 +08:00
 6260628

google 了几篇文章,全是上来直接教你改这些数据的文章,但是系统为什么有这个限制,以即改完之后会有什么影响,这些参数应该参考什么进行改完全没有,希望大神可以帮忙解答一下,感谢

3123 次点击
所在节点    程序员
10 条回复
6260628
2019-07-09 11:30:33 +08:00
还是我搜的关键字不对.... 麻烦有经典文章的同学帮忙贴出来
Sanko
2019-07-09 11:36:19 +08:00
假如有 10w 个线程,怎么调度?
pkookp8
2019-07-09 11:39:19 +08:00
物理内存是有限的,越是修改线程栈空间大小,就会越发现物理内存是有限的。除非加内存
lihongjie0209
2019-07-09 11:39:35 +08:00
你觉得汽车为什么要限制人数
6260628
2019-07-09 11:41:41 +08:00
我知道限制肯定有限制的原因? 我想知道这里的道理和前因后果,跟据多大的内存有多少线程的限制,什么情况下我应该如何调整
vanxy
2019-07-09 11:45:17 +08:00
https://stackoverflow.com/questions/344203/maximum-number-of-threads-per-process-in-linux

大致意思是最大线程数是由最大内存控制的。
反过来看, 限制最大线程的原因就是因为内存有限啊
Youen
2019-07-09 11:46:38 +08:00
wodexiaogou
2019-07-09 11:57:03 +08:00
线程越多,进程占用资源越多,会导致系统资源耗尽直接宕机,所以要限制。
大佬级别的会根据应用运行状况进行参数调配,让系统在正常情况下发挥最大的功能,这也就是系统调优软件调优了。
再比如 Linux 有个著名的 fock 炸弹,它就是无限制生成子线程,无限制消耗系统资源,最终导致系统崩溃。
:(){:|:&};:
就是这个,可以在虚拟机上用普通账号测试,因为普通账号会对资源进行限制,当然也可能因为系统资源太小导致还没达到限制级别,自己就先崩溃了。
6260628
2019-07-09 12:05:09 +08:00
@Youen 看了您这篇文章让我恍然大悟,这些线程数据 /TCP 连接数量要跟据,系统运行的服务所做的事情到底是计算密集型和还是 IO 密集型来做一些平衡,居然参数要对该 linux 系统上运行的服务所做的事情架构要有清晰的了解,如果这个机器只是做 TCP 请求的转发,这时我应该把线程数和 TCP 连接数调大,至于多大,要在测试环境中做一个压力测试,如果我不仅是做 tCP 请求转发,而且对转发的数据做了一些处理,这时我就应该考虑把线程数调小一些,使线程切换的开销不会影响到性能,关键点:对 linux 跑的服务了解、性能测试
fghjghf
2019-07-09 16:35:39 +08:00
tcp 的 listen(全连接+半连接)。在 Linux 下是没有限制对,除非内存爆了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/581263

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX