记录一次java web接口压测调优过程

3台8核服务器,目标400tps

1、server采用的线程数200,队列100,借鉴tomcat

Tomcat作为一款流行的Java Web服务器,其默认配置覆盖了从端口设置、应用部署、日志记录到性能调整等多个方面。以下是一些关键的默认配置概览:

  1. 端口配置:

    • 监听端口: Tomcat默认监听8080端口作为HTTP请求的入口。这意味着,如果你在本地安装了Tomcat,可以通过http://localhost:8080来访问它的默认首页。
    • 关闭端口: 默认情况下,Tomcat会在8005端口监听关闭命令。发送SHUTDOWN命令到这个端口可以安全地关闭Tomcat服务器。
  2. 默认应用与主页:

    • Tomcat的默认应用目录是webapps/ROOT,当你访问Tomcat的根URL(例如,http://localhost:8080)时,它会显示这个目录下的内容作为默认主页。如果你想更改默认应用,可以直接替换或修改ROOT目录下的内容。
  3. 日志配置:

    • 日志的默认配置文件是conf/logging.properties。Tomcat默认将日志输出到catalina.out文件以及控制台。你可以通过修改这个文件来调整日志级别、格式和输出目标。
  4. 最大连接数与线程池:

    • Tomcat默认的最大线程数(maxThreads)是200,这意味着最多可以同时处理200个请求。连接等待队列的默认长度是100。这些值可以根据实际需求在server.xml中进行调整。
  5. Context配置:

    • context.xml文件提供了所有Web应用共有的默认上下文配置。每个Web应用也可以有自己的META-INF/context.xml来覆盖这些默认设置。
  6. 虚拟主机配置:

    • 默认情况下,Tomcat没有配置虚拟主机。如果你需要为不同的域名提供服务,可以在server.xml中的<Host>元素进行配置。
  7. 管理应用:

    • Tomcat包含两个内置的管理应用:Manager和Admin Web Application,它们分别允许用户管理和监控部署的Web应用以及进行更高级的配置管理。这些应用需要在conf/tomcat-users.xml中配置相应的用户角色才能访问。

请注意,随着时间的推移和不同版本的更新,Tomcat的具体默认配置可能会有所变化。上述信息基于最近的资料汇总,对于特定版本的Tomcat,建议参考其官方文档或发行说明获取最准确的默认配置详情。

2、数据库连接池用hikari,单机线程池连接数配置16

HikariCP 是一个高性能的 JDBC 连接池,它在 Spring Boot 应用中经常作为默认的数据源。以下是 HikariCP 数据源的一些常用配置参数及其说明:

  1. spring.datasource.hikari.maximumPoolSize:

    • 描述:连接池中允许的最大连接数。
    • 默认值:根据系统的环境和数据库的不同而不同,通常为 10。
  2. spring.datasource.hikari.minimumIdle:

    • 描述:连接池中维护的最小空闲连接数。
    • 默认值:与 maximumPoolSize 相同。
  3. spring.datasource.hikari.connectionTimeout:

    • 描述:等待从连接池获取连接的最长时间(毫秒),超时则抛出异常。
    • 默认值:30000 毫秒(30秒)。
  4. spring.datasource.hikari.idleTimeout:

    • 描述:连接允许在池中闲置的最长时间,超时则被释放。
    • 默认值:600000 毫秒(10分钟)。
  5. spring.datasource.hikari.maxLifetime:

    • 描述:连接的最大生命周期,超时后连接将被关闭并重新创建。
    • 默认值:1800000 毫秒(30分钟)。
  6. spring.datasource.hikari.autoCommit:

    • 描述:从连接池中获取的连接是否默认开启自动提交。
    • 默认值:true。
  7. spring.datasource.hikari.poolName:

    • 描述:连接池的名称。
    • 默认值:无,默认生成一个随机的名字。
  8. spring.datasource.hikari.dataSourceClassName:

    • 描述:具体数据库的 JDBC 数据源类名。
    • 默认值:无,需要根据使用的数据库驱动进行配置。
  9. spring.datasource.hikari.jdbcUrl:

    • 描述:数据库的 JDBC URL。
    • 默认值:无,必须手动配置。
  10. spring.datasource.hikari.username:

    • 描述:数据库用户名。
    • 默认值:无,必须手动配置。
  11. spring.datasource.hikari.password:

    • 描述:数据库密码。
    • 默认值:无,必须手动配置。

请注意,这些参数的具体默认值可能会随 HikariCP 版本更新而变化,建议参考最新的官方文档或使用 Spring Boot 应用中的默认配置作为指导。在实际应用中,根据业务需求和数据库性能调整这些参数,可以有效提升应用程序的性能。

web连接数:cpu占用率

数据库连接数:压测


hikari About Pool Sizing

jvm内存占用,GC频率

监控gc

jstat -gcutil 是一个命令行工具,用于监控 Java 虚拟机 (JVM) 的垃圾收集 (GC) 状态和堆内存使用情况。它是 Oracle JDK 和 OpenJDK 中的 Jstat 工具的一部分,可以提供有关 JVM 内存管理的实时统计信息。

当你使用 jstat -gcutil 命令时,它会输出以下信息:

  • S0U: Survivor Space 0 的使用率(百分比)。
  • S1U: Survivor Space 1 的使用率(百分比)。
  • EU: Eden Space 的使用率(百分比)。
  • OU: Old Gen (Old Space) 的使用率(百分比)。
  • MU: Metaspace 的使用率(百分比)。在 Java 8 及更高版本中,Metaspace 替代了永久代 (PermGen)。
  • CCSU: Compressed Class Space 的使用率(百分比)。这也是 Java 8 及更高版本中的一部分。
  • YGC: 自 JVM 启动以来 Young Generation 的垃圾收集次数。
  • YGCT: Young Generation 的垃圾收集总耗时(秒)。
  • FGC: Full Garbage Collection(或称为 Old Generation 的垃圾收集)的次数。
  • FGCT: Full Garbage Collection 的总耗时(秒)。
  • GCT: 总的垃圾收集时间(秒)。

jstat -gcutil 命令的格式如下:

jstat -gcutil <pid> [interval] [count]
  • <pid> 是 Java 进程的进程 ID。
  • [interval] 是两次输出之间的时间间隔(以毫秒为单位),如果省略则只输出一次。
  • [count] 是输出的次数,如果省略则默认为无限次。

例如,要监控 PID 为 1234 的 JVM 的 GC 状态,每秒输出一次,共输出 10 次,可以使用以下命令:

jstat -gcutil 1234 1000 10

这个命令非常适合在诊断内存泄漏、性能瓶颈和优化垃圾收集策略时使用。通过监控这些指标,可以了解 JVM 的内存使用模式,识别潜在问题,并调整 JVM 参数以优化应用性能。

监控cpu

mpstat -P ALL 1 是一个在 Linux 系统中用于监控 CPU 使用情况的命令。这个命令使用 mpstat 工具,它是 sysstat 包的一部分,专门设计用于多处理器系统中获取详细的 CPU 统计信息。让我们分解一下这个命令:

  • mpstat:这是命令的名字,它代表 “Multiprocessor Statistics”,用于报告 CPU 的使用情况。

  • -P ALL:这个选项指定 mpstat 应该报告所有 CPU 核心(包括多处理器系统中的每一个核心)的详细统计信息。ALL 关键字表示所有 CPU 都会被监控。

  • 1:这个数字表示采样间隔,即 mpstat 将每隔 1 秒钟收集和报告一次 CPU 使用数据。这意味着输出将每秒刷新一次,显示最新的 CPU 使用情况。

当你运行 mpstat -P ALL 1 命令时,你将看到类似以下的输出:

Linux 5.4.0-104-generic (yourhostname)       01/01/2023     _x86_64_        (8 CPU)01:23:45 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
01:23:46 PM  all    1.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00   98.50
01:23:46 PM    0    0.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00  100.00
01:23:46 PM    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01:23:46 PM    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
...

每一列的含义如下:

  • %usr:用户空间应用程序消耗的 CPU 时间百分比。
  • %nice:高优先级(nice 值较低)进程消耗的 CPU 时间百分比。
  • %sys:内核空间消耗的 CPU 时间百分比。
  • %iowait:CPU 等待 I/O 完成的时间百分比。
  • %irq:处理硬件中断请求的时间百分比。
  • %soft:处理软件中断请求的时间百分比。
  • %steal:虚拟机管理程序消耗的 CPU 时间百分比(在虚拟化环境中)。
  • %guest:虚拟机运行消耗的 CPU 时间百分比。
  • %idle:CPU 处于空闲状态的时间百分比。

这个命令对于监控系统性能和诊断 CPU 使用情况的问题非常有用,特别是在多处理器或多核心系统中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/36954.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows11 OneDrive禁止开机自启动。

1、先上个图&#xff1a; 开机默认自启&#xff0c;然后设置中&#xff0c;也没有找到可以设置的。 2、然后我们通过任务管理器来处理&#xff0c;右键任务栏&#xff1a; 打开任务管理器&#xff1a; 选中OneDrive&#xff0c;然后点击【禁 用】按钮即可。 或者鼠标右键&…

【C++:list】

list概念 list是一个带头的双向循环链表&#xff0c;双向循环链表的特色&#xff1a;每一个节点拥有两 个指针进行维护&#xff0c;俩指针分别为prev和next,prev指该节点的前一个节点&#xff0c;next为该节点的后一个节点 list的底层实现中为什么对迭代器单独写一个结构体进行…

视频均衡驱动器,SDI产品PIN LMH0387

视频均衡驱动器,功能仿制 TI公司 LMH0387产品。本期间支持 DVB-ASI,作为驱动器能够选择输出速率,作为均衡接收器能支持100m 以上传输距离(线缆类型 Belden1694A)。 工作温度范围:-40℃~85℃:a) 电源电压:3.14V~3.46V: 驱动器输出信号:单端 CML 信号: 均衡器输出信号:LVDS 电平…

PHP ODBC:连接数据库的桥梁

PHP ODBC&#xff1a;连接数据库的桥梁 PHP ODBC&#xff08;Open Database Connectivity&#xff09;是一个允许PHP应用程序连接到各种数据库管理系统的扩展。它为PHP提供了一个标准的数据库访问接口&#xff0c;使得开发者可以编写不依赖于特定数据库系统的代码。本文将详细…

精通Postman:请求头设置的艺术

精通Postman&#xff1a;请求头设置的艺术 在API测试和开发过程中&#xff0c;Postman是一个不可或缺的工具。它不仅简化了请求的发送过程&#xff0c;还提供了丰富的功能来定制和优化请求。其中&#xff0c;设置请求头&#xff08;Headers&#xff09;是配置HTTP请求的关键部…

【C++/STL】:优先级队列的使用及底层剖析仿函数

目录 &#x1f4a1;前言一&#xff0c;优先级队列的使用二&#xff0c;仿函数1&#xff0c;什么是仿函数2&#xff0c;仿函数的简单示例 三&#xff0c;优先级队列的底层剖析 &#x1f4a1;前言 优先队列(priority_queue)是一种容器适配器&#xff0c;默认使用vector作为其底层…

在 notebook 中输入代码 `%matplotlib inline` 是什么意思?

在 Jupyter Notebook 中输入代码 %matplotlib inline 是一种魔法命令&#xff0c;它用于配置 Matplotlib 库的显示方式。具体来说&#xff0c;它会在 Notebook 单元格内嵌绘图&#xff0c;使生成的图表直接显示在 Notebook 的单元格输出中&#xff0c;而不是弹出一个单独的窗口…

Pytest学习(2) ---- 用例执行

https://www.cnblogs.com/saryli/p/14657823.html 先保存一下吧 还学到这里哈哈

Pbootcms留言“提交成功”的提示语怎么修改

我们在用到pbootcms建站时候&#xff0c;其中有个留言功能&#xff0c;提交成功后会提示&#xff1a;提交成功&#xff08;如下图所示&#xff09;&#xff0c;那么我们要修改这个提示语要怎么操作呢&#xff1f; 如果需要修改的话&#xff0c;直接找到文件/apps/home/control…

【Android】【Compose】Compose里面的Row和Column的简单使用

内容 Row和Column的简单使用方式和常用属性含义 Row 在 Jetpack Compose 中&#xff0c;Row 是一种用于在水平方向排列子元素的布局组件。它类似于传统 Android 中的 LinearLayout&#xff0c;但更加灵活和强大。 Row的代码 Composable inline fun Row(modifier: Modifier…

最新扣子(Coze)实战案例:图像流工具之空间风格化,完全免费教程

&#x1f9d9;‍♂️ 大家好&#xff0c;我是斜杠君&#xff0c;手把手教你搭建扣子AI应用。 &#x1f4dc; 本教程是《AI应用开发系列教程之扣子(Coze)实战教程》&#xff0c;完全免费学习。 &#x1f440; 关注斜杠君&#xff0c;可获取完整版教程。&#x1f44d;&#x1f3f…

Python的Django部署uwsgi后自签名实现的HTTPS

通过SSL/TLS来加密和客户端的通信内容。提高网络安全性&#xff0c;但是会损耗部分的服务器资源。 HTTPS 的原理图。 web.key 是打死也不能给其他人的。一定要保存好。里面主要是私钥。是各种认证的根基。本地测试的话生成1024的即可&#xff0c;如果是生产环境推荐使用2048。…

高级运维工程师讲述银河麒麟V10SP1服务器加固收回权限/tmp命令引起生产mysql数据库事故实战

高级运维工程师讲述银河麒麟V10SP1服务器加固收回权限/tmp命令引起生产MySql数据库事故实战 一、前言 作为运维工程师经常会对生产服务器进行安全漏洞加固&#xff0c;一般服务厂商、或者甲方信息安全中心提供一些安全的shell脚本&#xff0c;一般这种shell脚本都是收回权限&…

查看当前服务器Kafka是否已启动

# 查看当前系统中的java进程 # -ml 详细内容 jps -ml | grep Kafka

解决类重复的问题

1.针对AndroidX 类重复问题 解决办法&#xff1a; android.useAndroidXtrue android.enableJetifiertrue2.引用其他sdk出现类重复的问题解决办法&#xff1a;configurations {all { // You should exclude one of them not both of themexclude group: "com.enmoli"…

mac. mysql 设置查询结果直接写入文件

文章目录 需求复现设置mysql数据库sessionglobal 需求复现 我们需要将mysql查询的结果直接以csv格式的形式写入文件系统&#xff0c;以便能够使用其他脚本语言读入并进行分析&#xff0c;此时我们可以使用如下sql代码进行操作&#xff1a; select a,b, ... INTO OUTFILE file…

《人人都是产品经理》:项目坎坷的一生(下)

《人人都是产品经理》&#xff1a;项目坎坷的一生&#xff08;下&#xff09; 文档只是手段模板的作用多人协作与版本管理 流程只不过是手段这么多评审&#xff0c;可以省嘛&#xff1f; 敏捷更是手段有计划、更拥抱变化迭代周期内尽量不增加任务 集中工作、小步快跑持续细化需…

QT4-QT5-QString-const char* 之间的转换

最好所有QT项目 文件编码&#xff1a; UTF-8 QString 编码: UTF-8 const char* 编码&#xff1a; UTF-8 1.QString 有2种编码: UTF-8 GBK 默认的是UTF-8 1.1 QString : GBK ->…

开放式耳机哪个牌子好?2024热门红榜开放式耳机测评真实篇!

当你跟朋友们聊天时&#xff0c;他们经常抱怨说长时间戴耳机会令耳朵感到不适,后台也有很多人来滴滴我&#xff0c;作为一位致力于开放式耳机的测评博主&#xff0c;在对比了多款开放式耳机之后&#xff0c;你开放式耳机在保护听力方面确实有用。开放式的设计有助于减轻耳道内的…

Hive 实操案例一:统计 Top10 视频观看数

一、数据表结构 视频表 t_video 字段注释描述videoId视频唯一 id(String)11 位字符串uploader视频上传者(String)上传视频的用户名 Stringage视频年龄(int)视频在平台上的整数天category视频类别(Array<String>)上传视频指定的视频分类length视频长度(Int)整形…