关于线程切换开销问题还是不明白。

发布于 2022-09-05 05:05:12 字数 354 浏览 18 评论 0

为什么要限制最大线程数?

字面上看[线程开销], 就是操作系统切换线程的开销。但是这并不是本问题要讨论的,因为它就在那儿,无法改变,所以先不管它。我所想知道是为什么要在程序中限制自己的线程数?比如说,tomcat 就这么做了,但是为什么呢?

如何确定最大线程数?

Tomcat 中确实默认设置了最大线程数 200。我想知道 200 这个值是怎么得来的?它和什么东西有关系?我如何优化它?同一台服务器开启多个 Tomcat ,这个值要不要调整,怎么调?

多线程改造为协程有没有性能优化?

如果我将所有阻塞的(文件、网络)函数都改成非阻塞的,(不是基于底层异步 IO,而是用工作线程池模拟),会不会带来性能提升。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

病女 2022-09-12 05:05:12

200只是经验值,根据服务器核数内存调整
现在大多框架,应用都是非阻塞io,你自己的代码用当然好

没有心的人 2022-09-12 05:05:12
  1. 首先tomcat的200个线程就是由线程池来管理,第一是可以防止大量客户端请求进来无上限的创建线程导致的栈内存溢出或线程过多CPU上下文切换性能急剧下降,第二防止线程对象一直创建和回收,线程池可以回收再利用。

  2. 线程数是要根据具体情况去调优的,比如可以做压力测试把线程慢慢调大然后看平均响应时间等等,然后一步步调整。

  3. tomcat7.0开始已经支持NIO了,NIO在高并发环境下性能肯定是要高于BIO的,毕竟只需要少量线程就能处理所有IO操作,避免了线性增长的线程栈内存开销和CPU上下文切换。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文