3台8核服务器,目标400tps
1、server采用的线程数200,队列100,借鉴tomcat
Tomcat作为一款流行的Java Web服务器,其默认配置覆盖了从端口设置、应用部署、日志记录到性能调整等多个方面。以下是一些关键的默认配置概览:
-
端口配置:
- 监听端口: Tomcat默认监听8080端口作为HTTP请求的入口。这意味着,如果你在本地安装了Tomcat,可以通过
http://localhost:8080
来访问它的默认首页。 - 关闭端口: 默认情况下,Tomcat会在8005端口监听关闭命令。发送SHUTDOWN命令到这个端口可以安全地关闭Tomcat服务器。
- 监听端口: Tomcat默认监听8080端口作为HTTP请求的入口。这意味着,如果你在本地安装了Tomcat,可以通过
-
默认应用与主页:
- Tomcat的默认应用目录是
webapps/ROOT
,当你访问Tomcat的根URL(例如,http://localhost:8080
)时,它会显示这个目录下的内容作为默认主页。如果你想更改默认应用,可以直接替换或修改ROOT
目录下的内容。
- Tomcat的默认应用目录是
-
日志配置:
- 日志的默认配置文件是
conf/logging.properties
。Tomcat默认将日志输出到catalina.out
文件以及控制台。你可以通过修改这个文件来调整日志级别、格式和输出目标。
- 日志的默认配置文件是
-
最大连接数与线程池:
- Tomcat默认的最大线程数(
maxThreads
)是200,这意味着最多可以同时处理200个请求。连接等待队列的默认长度是100。这些值可以根据实际需求在server.xml
中进行调整。
- Tomcat默认的最大线程数(
-
Context配置:
context.xml
文件提供了所有Web应用共有的默认上下文配置。每个Web应用也可以有自己的META-INF/context.xml
来覆盖这些默认设置。
-
虚拟主机配置:
- 默认情况下,Tomcat没有配置虚拟主机。如果你需要为不同的域名提供服务,可以在
server.xml
中的<Host>
元素进行配置。
- 默认情况下,Tomcat没有配置虚拟主机。如果你需要为不同的域名提供服务,可以在
-
管理应用:
- Tomcat包含两个内置的管理应用:Manager和Admin Web Application,它们分别允许用户管理和监控部署的Web应用以及进行更高级的配置管理。这些应用需要在
conf/tomcat-users.xml
中配置相应的用户角色才能访问。
- Tomcat包含两个内置的管理应用:Manager和Admin Web Application,它们分别允许用户管理和监控部署的Web应用以及进行更高级的配置管理。这些应用需要在
请注意,随着时间的推移和不同版本的更新,Tomcat的具体默认配置可能会有所变化。上述信息基于最近的资料汇总,对于特定版本的Tomcat,建议参考其官方文档或发行说明获取最准确的默认配置详情。
2、数据库连接池用hikari,单机线程池连接数配置16
HikariCP 是一个高性能的 JDBC 连接池,它在 Spring Boot 应用中经常作为默认的数据源。以下是 HikariCP 数据源的一些常用配置参数及其说明:
-
spring.datasource.hikari.maximumPoolSize:
- 描述:连接池中允许的最大连接数。
- 默认值:根据系统的环境和数据库的不同而不同,通常为 10。
-
spring.datasource.hikari.minimumIdle:
- 描述:连接池中维护的最小空闲连接数。
- 默认值:与
maximumPoolSize
相同。
-
spring.datasource.hikari.connectionTimeout:
- 描述:等待从连接池获取连接的最长时间(毫秒),超时则抛出异常。
- 默认值:30000 毫秒(30秒)。
-
spring.datasource.hikari.idleTimeout:
- 描述:连接允许在池中闲置的最长时间,超时则被释放。
- 默认值:600000 毫秒(10分钟)。
-
spring.datasource.hikari.maxLifetime:
- 描述:连接的最大生命周期,超时后连接将被关闭并重新创建。
- 默认值:1800000 毫秒(30分钟)。
-
spring.datasource.hikari.autoCommit:
- 描述:从连接池中获取的连接是否默认开启自动提交。
- 默认值:true。
-
spring.datasource.hikari.poolName:
- 描述:连接池的名称。
- 默认值:无,默认生成一个随机的名字。
-
spring.datasource.hikari.dataSourceClassName:
- 描述:具体数据库的 JDBC 数据源类名。
- 默认值:无,需要根据使用的数据库驱动进行配置。
-
spring.datasource.hikari.jdbcUrl:
- 描述:数据库的 JDBC URL。
- 默认值:无,必须手动配置。
-
spring.datasource.hikari.username:
- 描述:数据库用户名。
- 默认值:无,必须手动配置。
-
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 使用情况的问题非常有用,特别是在多处理器或多核心系统中。