Драйвер JConn4 sybase jdbc намного медленнее, чем JConn2

Недавно я обновил драйвер JConn2 Sybase до JConn4. Мой Java-код jdbc неоднократно вызывает proc. Каждый вызов proc в ~1000 раз медленнее с JConn4. JConn2 среднее значение составляет ~ 2 мс. С JConn4 это ~ 2 с.

Процедура вызывается через CallableStatement.

Кто-нибудь знает, есть ли какие-то свойства соединения, которые изменились с JConn4, которые, возможно, нужно установить, чтобы устранить эту проблему с производительностью?

Это среда Linux.

Я взял дамп потока, и все, что я вижу, это следы, подобные этому:

java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
        at java.net.SocketInputStream.read(SocketInputStream.java:171)
        at java.net.SocketInputStream.read(SocketInputStream.java:141)
        at com.sybase.jdbc4.timedio.RawDbio.reallyRead(RawDbio.java:404)
        at com.sybase.jdbc4.timedio.Dbio.doRead(Dbio.java:257)
        at com.sybase.jdbc4.timedio.InStreamMgr.readIfOwner(InStreamMgr.java:583)
        at com.sybase.jdbc4.timedio.InStreamMgr.doRead(InStreamMgr.java:319)
        at com.sybase.jdbc4.tds.TdsProtocolContext.getChunk(TdsProtocolContext.java:622)
        at com.sybase.jdbc4.tds.PduInputFormatter.readPacket(PduInputFormatter.java:239)
        at com.sybase.jdbc4.tds.PduInputFormatter.read(PduInputFormatter.java:72)
        at com.sybase.jdbc4.tds.TdsInputStream.read(TdsInputStream.java:91)
        at com.sybase.jdbc4.tds.TdsInputStream.readUnsignedByte(TdsInputStream.java:124)
        at com.sybase.jdbc4.tds.Tds.nextResult(Tds.java:2912)
        at com.sybase.jdbc4.jdbc.ResultGetter.nextResult(ResultGetter.java:78)
        at com.sybase.jdbc4.jdbc.SybStatement.nextResult(SybStatement.java:293)
        at com.sybase.jdbc4.jdbc.SybStatement.nextResult(SybStatement.java:275)
        at com.sybase.jdbc4.jdbc.SybStatement.executeLoop(SybStatement.java:2827)
        at com.sybase.jdbc4.jdbc.SybCallableStatement.execute(SybCallableStatement.java:244)

person user2879770    schedule 07.09.2018    source источник
comment
Такие проблемы с производительностью часто вызваны отсутствием случайной энтропии, это Linux? Вы легко заметите это, если создадите дамп потока. (Причина может заключаться в том, что новые драйверы используют более безопасные методы входа в систему.)   -  person eckes    schedule 07.09.2018
comment
да это линукс   -  person user2879770    schedule 07.09.2018
comment
2 с — это такая большая задержка, что она будет отображаться в дампе потока, и ее можно объяснить только такими вещами, как неудачные подключения, тайм-ауты, истощение ресурсов.   -  person eckes    schedule 07.09.2018
comment
Я снял дамп темы, и все, что я вижу, это следы, как я указал в посте выше.   -  person user2879770    schedule 07.09.2018
comment
Хорошо, этот дамп потока не указывает на какие-либо задержки на стороне клиента.   -  person eckes    schedule 09.09.2018


Ответы (1)


основное изменение между Jconn2 и Jconn4 используется по умолчанию. установка параметра DYNAMIC_PREPARE. Попробуйте установить его в FALSE в параметрах подключения.

На этой странице рассказывается, как изменить параметр DYNAMIC_PREPARE.

person Adam Leszczyński    schedule 08.09.2018