Мое приложение считывает данные из csv и вставляет в mysql.it, занимая больше процессора.
Когда я отлаживал ниже, поток jdbc потребляет больше процессора.
com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:40)
Сентос,
1.верх
7435 root 20 0 7677556 366436 14528 S 86.4 4.8 67:05.60 java
2. верх
top -n 1 -H -p 7435
top - 15:48:23 up 57 days, 21 min, 11 users, load average: 0.47, 0.53, 0.62
Threads: 28 total, 1 running, 27 sleeping, 0 stopped, 0 zombie
%Cpu(s): 4.9 us, 3.3 sy, 0.0 ni, 91.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 7650496 total, 188012 free, 1122392 used, 6340092 buff/cache
KiB Swap: 16777212 total, 16775664 free, 1548 used. 5914108 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7595 root 20 0 7677556 345864 14528 R 60.0 4.5 142:04.27 java
7435 root 20 0 7677556 345864 14528 S 0.0 4.5 0:00.00 java
7436 root 20 0 7677556 345864 14528 S 0.0 4.5 0:01.24 java
7454 root 20 0 7677556 345864 14528 S 0.0 4.5 1:06.92 java
7459 root 20 0 7677556 345864 14528 S 0.0 4.5 1:07.11 java
Есть идеи?
ExecutorService service=Executors.newFixedThreadPool(count);
FileAlterationObserver fao = new FileAlterationObserver(folder);
fao.addListener(new FileListener(service));
final FileAlterationMonitor monitor = new FileAlterationMonitor(Integer.parseInt("100"));
monitor.addObserver(fao);
monitor.start();
Всякий раз, когда листнер получает csv, я отправляю его в службу Excutor.
service.submit(new PerformanceFileReader(f));
Если вы правильно закрываете объекты Connection в коде, в AbandonedConnectionCleanupThread нет необходимости. Вот почему некоторые пулы просто не имеют этой функции, например. HikariCP.
Я правильно закрываю все соединения




Это не воспроизводится в Windows, это только в ОС типа Linux.