Java应用程序正在使用<;从Ubuntu 18.04升级到20.04后cpu占用率为1%

Java应用程序正在使用<;从Ubuntu 18.04升级到20.04后cpu占用率为1%,java,mysql,ubuntu,java-11,ubuntu-20.04,Java,Mysql,Ubuntu,Java 11,Ubuntu 20.04,我正在开发一个Java/MySQL应用程序,在Ubuntu18.04上进行批处理测试需要3-4秒 我昨晚升级到Ubuntu 20.04,并保留了相同的mysql配置文件,现在相同的应用程序需要1分钟45-47秒 6.27user 0.41system 1:45.53elapsed 6%CPU (0avgtext+0avgdata 168724maxresident)k 0inputs+384outputs (0major+42056minor)pagefaults 0swaps 我注意到,使用

我正在开发一个Java/MySQL应用程序,在Ubuntu18.04上进行批处理测试需要3-4秒

我昨晚升级到Ubuntu 20.04,并保留了相同的mysql配置文件,现在相同的应用程序需要1分钟45-47秒

6.27user 0.41system 1:45.53elapsed 6%CPU (0avgtext+0avgdata 168724maxresident)k
0inputs+384outputs (0major+42056minor)pagefaults 0swaps
我注意到,使用lscpu时,服务器现在平均以min freq运行。我尝试将“acpi=ht”添加到/etc/default/grub中,并重新启动机器,以关闭电源管理,但处理器仍在低频运行,频率提升可能无法工作

On-line CPU(s) list:             0-15
Thread(s) per core:              2
Core(s) per socket:              4
Socket(s):                       2
NUMA node(s):                    2
Vendor ID:                       GenuineIntel
CPU family:                      6
Model:                           44
Model name:                      Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
Stepping:                        2
Frequency boost:                 enabled
CPU MHz:                         1599.592
CPU max MHz:                     2401.0000
CPU min MHz:                     1600.0000
BogoMIPS:                        4799.75
Virtualization:                  VT-x
L1d cache:                       256 KiB
L1i cache:                       256 KiB
L2 cache:                        2 MiB
L3 cache:                        24 MiB
使用mysqltuner检查服务器的InnoDB指标一切正常,因此这似乎与CPU设置/OS限制或Java配置/代码问题有关

-------- InnoDB Metrics ----------------------------------------------------------------------------
[--] InnoDB is enabled.
[--] InnoDB Thread Concurrency: 8
[OK] InnoDB File per table is activated
[OK] InnoDB buffer pool / data size: 9.0G/2.6G
[OK] Ratio InnoDB log file size / InnoDB Buffer pool size: 1.0G * 2/9.0G should be equal 25%
[OK] InnoDB buffer pool instances: 9
[--] Number of InnoDB Buffer Pool Chunk : 72 for 9 Buffer Pool Instance(s)
[OK] Innodb_buffer_pool_size aligned with Innodb_buffer_pool_chunk_size & Innodb_buffer_pool_instances
[OK] InnoDB Read buffer efficiency: 99.90% (2901594 hits/ 2904524 total)
[!!] InnoDB Write Log efficiency: 75.47% (19033 hits/ 25219 total)
[OK] InnoDB log waits: 0.00% (0 waits / 6186 writes)

在应用程序运行时运行top表明Java只使用了MySQL JDBC驱动程序默认行为在更新操作系统时发生了明显变化

上一个驱动程序关闭了Java批处理更新的事务自动提交-在数据连接上手动添加/运行
setAutoCommit(false)
,使运行时间恢复正常(显然,它运行了1000个插入的原子事务)

这是一个很好的例子,说明了为什么人们应该防御性地编写代码并添加有意编写的代码,即使默认的行为/配置是代码中使用的-默认的行为/配置可以而且将改变


也许有人知道在不同版本之间发生了哪些变化?例如,有些包路径似乎发生了变化,奇怪的是,mysql慢速查询日志没有帮助,因为当驱动程序行为从批插入的“自动提交”关闭更改为“自动提交”打开时,先前的batchUpdate插入被拆分为1000个原子插入。。。所以慢日志只显示了一次插入,时间超过1秒。。。然而,在插入调试控制台输出时,我发现它在插入过程中挂起了100秒。查看配置文件、联系人信息的网络配置文件以及可免费下载的实用程序脚本,以提高性能。
   2113 mysql     20   0   25.7g   2.7g  36264 S   4.3  11.6   0:12.35 mysqld
    353 root      20   0       0      0      0 S   2.7   0.0   0:02.99 md0_raid5
    244 root       0 -20       0      0      0 I   0.7   0.0   0:00.98 kworker/10:1H-kblockd
    248 root       0 -20       0      0      0 I   0.7   0.0   0:00.07 kworker/8:1H-kblockd
    399 root      20   0       0      0      0 D   0.7   0.0   0:00.61 jbd2/md0-8
   2372 bias      20   0 5597164 180592  27784 S   0.7   0.7   0:07.54 java
   4654 user      20   0    3856    100      0 R 100.0   0.0   0:13.88 stress
   4643 user      20   0    3856    100      0 R 100.0   0.0   0:13.82 stress
   4645 user      20   0  134932   3272    272 R 100.0   0.0   0:13.84 stress
   4646 user      20   0    3856    100      0 R 100.0   0.0   0:13.80 stress
 39     <dependency>
 40        <groupId>mysql</groupId>
 41        <artifactId>mysql-connector-java</artifactId>
 42        <version>8.0.21</version>
 43     </dependency>