关于 tomcat 线程池调优的问题

本贴最后更新于 1754 天前,其中的信息可能已经时过境迁

一个小直播平台,随着用户增加,性能出现了问题,开始是消息延迟,接的是腾讯的 im,做过测试,10000 条消息可能会有 20 条会有 100 多秒的延迟才有响应,我们所有的消息是放在 spring 的异步线程池做处理,当时 spring 线程池的数量设置的最大数量是 200,队列是 1 万,策略是队列不足主线程跑,但是消息延迟更明显了,看日志发现 spring 的线程池一直开的很高,随后就把最大数量改到了 2000 队列改到 2000(这么做是不想让消息在队列里停留太久)就这样好过一阵子,然后每次感觉很卡的时候就不停的加负载(主服务 23 台负载在 4 台服务器上),对了忘记说了。架构就是 zk 加 dubbo,其实 dubbo 也没拆分很大,主要对后台管理系统提供服务。所以全部压力都在这 23 台负载上,我们运维给 tomcat 线程池设置到了 1000,后来改到了 2000,但是我发现接口响应变的更久了,切了份 nginx 日志,在高峰期,平均接口响应都在 20 秒之上,我的天那,(我一度怀疑是代码或者 db 的问题,我们的 redis mysql 都是买的阿里的)平时都是 0.00 几响应, 然后我看了负载 tomcat 的日志,惊奇的发现,高峰期 随便一个线程执行 距下次执行都是 20 秒以上,看了很多资料,觉得是线程设置太高,线程切换时间用的久。但是我们的 cpu 高峰也就只跑了 40% 而且日志里线程最高就只跑到 1400,大佬们,有谁能给我指跳路,
目前我觉得是线程设置太高了,导致引起的一系列问题。。
太难的做不了,然后人手也不够,就两个后台 java,一个运维还什么也不懂。。为难我这个没做过并发的一年小开发了。。。。

  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 1 关注
  • 并发
    75 引用 • 73 回帖 • 1 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    6637 引用 • 29774 回帖 • 247 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 88250

    最好是查一下官方文档再调。我总感觉你这不是线程池的问题。 加点耗时日志看看,另外可以用 jstack、jmap 等工具看看 JVM 状态。

    2 回复
  • 其他回帖
  • jackfruitran
    作者

    cpu 最开始只有 10% 现在高峰期就 40% 对外的网络连接有,但是大部分都在异步连接池里,有延迟的比例也很少。。大 d 之前有用 tomcat 吗,线程池参数是怎么设置的。。。

    1 回复
  • 88250

    加诊断日志比较稳妥高效,先排除第三方调用影响,这个最不可控。把有可能耗时的点都列出来,逐一排除。

  • jackfruitran
    作者

    耗时日志的话 就是 nginx 响应时间看到了,接口高峰请求 10S-30S 不等,低峰 0.00 几秒就完事了,,jvm 堆内存快照的话 不敢在生产环境直接用 ,每个知识点 都要先看很久资料 再开始用,真的是太菜了,而且身边也没大佬带,

    1 回复
  • 查看全部回帖

推荐标签 标签

  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    51 引用 • 37 回帖
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖 • 1 关注
  • 百度

    百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。

    63 引用 • 785 回帖 • 252 关注
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    19 引用 • 31 回帖 • 6 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 561 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    492 引用 • 1384 回帖 • 365 关注
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 602 关注
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 512 关注
  • 音乐

    你听到信仰的声音了么?

    59 引用 • 509 回帖 • 1 关注
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    76 引用 • 37 回帖
  • OnlyOffice
    4 引用 • 16 关注
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    170 引用 • 414 回帖 • 418 关注
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 76 关注
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    103 引用 • 294 回帖 • 1 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    7 引用 • 26 回帖 • 1 关注
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖 • 1 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 3 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖 • 2 关注
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    41 引用 • 130 回帖 • 293 关注
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 687 关注
  • 导航

    各种网址链接、内容导航。

    37 引用 • 168 回帖
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    85 引用 • 895 回帖
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    311 引用 • 546 回帖 • 35 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 91 关注