Производительность приложения на основе Jboss 7.1.1 сильно падает после обновления до Java версии 1.7.0.211 или более поздней - PullRequest
0 голосов
/ 26 мая 2020

После обновления до Java 7u211 требуется в 3 раза больше времени для входа в базу данных и даже в другие внешние приложения, где требуется расшифровка пароля.

1) Всего 19 потоки, ожидающие подключения к базе данных в JBoss. Это неоправданно много при нормальных обстоятельствах:

         Line 471: - waiting to lock <0x0000000600bafa50> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
         Line 220: - waiting to lock <0x00000006010aa3c8> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
         Line 571: - waiting to lock <0x00000006010aa3c8> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
         Line 617: - waiting to lock <0x00000006010aa3c8> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
         Line 95:   - waiting to lock <0x00000006010ae1b0> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
         Line 370: - waiting to lock <0x00000006010ae1b0> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
         Line 403: - waiting to lock <0x00000006010ae1b0> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
         Line 637: - waiting to lock <0x00000006010ae1b0> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
         Line 665: - waiting to lock <0x00000006010ae1b0> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
         Line 701: - waiting to lock <0x00000006010ae1b0> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
         Line 729: - waiting to lock <0x00000006010ae1b0> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
         Line 773: - waiting to lock <0x00000006010ae1b0> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
         Line 797: - waiting to lock <0x00000006010ae1b0> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
         Line 821: - waiting to lock <0x00000006010ae1b0> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
         Line 857: - waiting to lock <0x00000006010ae1b0> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
         Line 889: - waiting to lock <0x00000006010ae1b0> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
         Line 921: - waiting to lock <0x00000006010ae1b0> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
         Line 953: - waiting to lock <0x00000006010ae1b0> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
         Line 985: - waiting to lock <0x00000006010ae1b0> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)

2) Все эти 19 потоков ожидают трех блокировок (выделено: 0x00000006010ae1b0, 0x00000006010aa3c8, 0x0000000600bafa50). Эти 3 блокировки используются другими 3 потоками:

Line 547: - locked <0x00000006010ae1b0> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
Line 279: - locked <0x00000006010aa3c8> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)
Line 1496: - locked <0x0000000600bafa50> (a org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory)

3) Эти 3 потока имеют почти идентичный стек:

java.lang.Thread.State: WAITING (on object monitor)
         at java.lang.Object.wait(Native Method)
         at java.lang.Object.wait(Object.java:503)
         at com.ncipher.nfast.connect.RequestList.waitSpecific(RequestList.java:193)
         - locked <0x000000077f425800> (a com.ncipher.nfast.connect.OutstandingRequest)
         at com.ncipher.nfast.connect.RequestList.wait(RequestList.java:106)
         at com.ncipher.nfast.connect.NFConnection.wait(NFConnection.java:555)
         at com.ncipher.nfast.connect.NFConnection.transact(NFConnection.java:648)
         at com.ncipher.provider.Utils.transact(Utils.java:393)
         at com.ncipher.provider.Utils.transact(Utils.java:366)
         at com.ncipher.provider.nCHash.updateChannel(nCHash.java:221)
         at com.ncipher.provider.nCHash.flush(nCHash.java:175)
         at com.ncipher.provider.nCHash.engineDigest(nCHash.java:91)
         at java.security.MessageDigest$Delegate.engineDigest(MessageDigest.java:592)
         at java.security.MessageDigest.digest(MessageDigest.java:365)
         at com.sun.crypto.provider.HmacCore.engineDoFinal(HmacCore.java:201)
         at javax.crypto.Mac.doFinal(Mac.java:561)
         at javax.crypto.Mac.doFinal(Mac.java:604)
         at com.sun.crypto.provider.PBKDF2KeyImpl.deriveKey(PBKDF2KeyImpl.java:179)
         at com.sun.crypto.provider.PBKDF2KeyImpl.<init>(PBKDF2KeyImpl.java:122)
         at com.sun.crypto.provider.PBKDF2Core.engineGenerateSecret(PBKDF2Core.java:69)
         at javax.crypto.SecretKeyFactory.generateSecret(SecretKeyFactory.java:335)
         at oracle.security.o5logon.O5Logon.generateOAuthResponse(Unknown Source)
         at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:833)
         at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:639)
         at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666)
         at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
         at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566)
         at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:254)
         at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createManagedConnectio`enter code here`n(LocalManagedConnectionFactory.java:240)
         [...]
...