我们在多核(8 核)虚拟机上运行多个进程。其中大多数是 Java。在另一个非 V 机器上,它们运行良好。但在这个机器上,有时一切都显得很慢。
顶部显示 CPU 使用率为 99%,但 IT 人员说这不是问题,因为它有 8 个核心。
无论如何,是否知道所有 8 个或只有几个核心可用于 Java 进程(由于虚拟机中的一些错误配置)?
有没有办法知道 Java 进程是否受到占用 2 个核心 50% 的扫描仪的影响?在 Windows 中,可以在任务管理器中查看https://ibb.co/mNJhqF 我们的服务器没有 GUI,因此需要终端命令
有任何命令/步骤可以知道 Java 进程需要多少 CPU 时间以及它们获得了多少 CPU 时间吗?
以下是 top 的输出(输入 1 后查看每个核心的使用情况。删除了多余的空格,以便在电子表格中格式化,将“ ”替换为“ ”,将“\n ”替换为“ ”)
top - 15:05:33 up 56 days, 13:35, 7 users, load average: 1.06, 1.08, 1.06
Tasks: 482 total, 2 running, 480 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.3 us, 0.7 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 99.0 us, 0.7 sy, 0.0 ni, 0.0 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 0.3 us, 1.0 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu6 : 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu7 : 0.7 us, 0.7 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 32934880 total, 32335788 used, 599092 free, 942292 buffers
KiB Swap: 9202684 total, 1338100 used, 7864584 free. 10891396 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14445 AVuser 20 0 376708 143972 3772 R 99.4 0.4 5:10.55 scanner
11045 user1 20 0 7162456 662720 11024 S 0.7 2.0 11:27.62 java
15685 root3 20 0 25.125g 585900 5300 S 0.7 1.8 156:19.28 java
123326 root3 20 0 5598660 218820 9792 S 0.7 0.7 15:43.57 java
12942 user1 20 0 5366300 409164 5984 S 0.3 1.2 203:47.47 java
14685 user1 20 0 34856 2088 1236 R 0.3 0.0 0:00.08 top
46018 user1 20 0 6417468 464356 15336 S 0.3 1.4 3:46.92 java
46645 user1 20 0 11.936g 2.837g 15020 S 0.3 9.0 3:53.25 java
47504 user1 20 0 3654616 41888 12124 S 0.3 0.1 1:52.82 java
47528 user1 20 0 5683220 316128 15408 S 0.3 1.0 2:51.20 java
122516 root3 20 0 12.371g 176716 9160 S 0.3 0.5 3:36.29 java
122701 root3 20 0 12.374g 177420 9216 S 0.3 0.5 4:00.00 java
122848 root3 20 0 12.373g 172008 9176 S 0.3 0.5 3:43.66 java
129623 user1 20 0 3654624 48728 10472 S 0.3 0.1 3:03.76 java
129653 user1 20 0 6650800 401032 12188 S 0.3 1.2 7:30.19 java
130620 root3 20 0 3645888 44848 6696 S 0.3 0.1 15:05.26 java
更新:一个物理系统上有 8 个虚拟机。驱动器位于同一个物理系统上。
1 VM 已强化与 mysql 通信并写入日志的 Java 进程(最新的 log4j,具有异步功能);其中 3 个 Java 进程确实在其发件箱中写入小文本文件,但它们运行正常 - 处理后几秒钟内删除
1 VM 用于 mysql(开源),略微强化了一点。全部都是 ubuntu 14.04 LTS。
I/O - 应该是最小的。我该如何测试呢?是否有任何实用程序可以在我的本地开发系统上编写,然后在虚拟机上编写?