forum.bitel.ru http://forum.bitel.ru/ |
|
Незакрытые preparedStatement (CRM) http://forum.bitel.ru/viewtopic.php?f=22&t=7369 |
Страница 11 из 12 |
Автор: | dimOn [ 14 июл 2016, 23:21 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
ну.... так вы там закрываете статементы? и почему у вас целая куча одинаковых запросов вообще если вы их используете? |
Автор: | Ping333 [ 15 июл 2016, 08:49 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
Дак, закрываю по финишу, куча запросов летит при получении баланса по каждому поинту PreparedStatement ps = con.prepareStatement(sql) ; ResultSet rs = ps.executeQuery(); //массив cid-ов while ( rs.next() ) { BalanceUtils bu = new BalanceUtils(con) ; BigDecimal ACCOUNT_BALANCE = BigDecimal.ZERO; ACCOUNT_BALANCE = bu.getBalance(new Date(), cid) ; } если закоментить bu.getBalance, тогда все ок ) но нужны балансы на сегодня ) ох тыж еп ) пока не написал здесь не понял. все ок. проблема ясна |
Автор: | Artur [ 15 июл 2016, 10:54 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
Ping333 писал(а): Ага, в дин коде Здравствуйте. Код скрипта покажите. |
Автор: | Ping333 [ 15 июл 2016, 11:02 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
Спасибо за ответ. я уже понял в чем проблема была while ( rs.next() ) { BalanceUtils bu = new BalanceUtils(con) ; на каждом rs вызывался BalanceUtils bu = new BalanceUtils(con) ; переделал |
Автор: | dimOn [ 15 июл 2016, 11:47 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
непонятно где там у вас финиш и что закрывается если внутри блока создаётся объект, но примерно так должно быть: BalanceUtils bu = new BalanceUtils(con) ; PreparedStatement ps = con.prepareStatement(sql) ; ResultSet rs = ps.executeQuery(); //массив cid-ов while ( rs.next() ) { BigDecimal ACCOUNT_BALANCE = bu.getBalance(new Date(), cid) ; } ps.close(); bu.close(); |
Автор: | Ping333 [ 15 июл 2016, 12:07 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
да, спасибо,так и сделал, закрывались дальше, не написал просто. сейчас примерно так BalanceUtils bu = new BalanceUtils(con) ; PreparedStatement ps = con.prepareStatement(sql) ; ResultSet rs = ps.executeQuery(); //массив cid-ов while ( rs.next() ) { BigDecimal ACCOUNT_BALANCE = bu.getBalance(new Date(), cid) ; } ps.close(); bu.close(); было так PreparedStatement ps = con.prepareStatement(sql) ; ResultSet rs = ps.executeQuery(); //массив cid-ов while ( rs.next() ) { BalanceUtils bu = new BalanceUtils(con) ; BigDecimal ACCOUNT_BALANCE = bu.getBalance(new Date(), cid) ; } ps.close(); bu.close(); поэтому и куча запросов была |
Автор: | dimOn [ 15 июл 2016, 13:15 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
а что, так вообще компилировалось? у вас же в момент bu.close() нет никакого bu, он в другом scope, внутри блока или у вас где то выше ещё один bu объявлен? |
Автор: | Ping333 [ 15 июл 2016, 13:21 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
извиняюсь, конечно не скомпилится так. когда код для форума сокращал, опустил несколько строк, bu.close() был внутри while |
Автор: | dimOn [ 16 июл 2016, 00:54 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
тогда не должно ругаться на незакрытые |
Автор: | vkulakov [ 19 июл 2016, 13:54 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
Код: 07-19/10:49:12 ERROR [http-bio-127.0.0.1-8080-exec-9] DefaultServerSetup - Many statements was open at connection close: com.mysql.jdbc.ServerPreparedStatement[182372] - SELECT * FROM contract WHERE id=45214 ... com.mysql.jdbc.ServerPreparedStatement[184052] - SELECT * FROM contract WHERE id=45745 java.lang.RuntimeException: http://forum.bitel.ru/viewtopic.php?t=7369 at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:426) at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:48) at ru.bitel.common.sql.ConnectionSet.recycle(ConnectionSet.java:272) at ru.bitel.bgbilling.kernel.base.server.DefaultContext.destroy(DefaultContext.java:37) at ru.bitel.bgbilling.kernel.container.managed.ServerContext.destroy(ServerContext.java:400) at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler.invoke0(AbstractJaxWsHandler.java:233) at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler.access$000(AbstractJaxWsHandler.java:47) at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler$1.run(AbstractJaxWsHandler.java:267) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler.invoke(AbstractJaxWsHandler.java:261) at ru.bitel.bgbilling.kernel.container.ws.server.JaxWsHandler.invoke(JaxWsHandler.java:315) at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler$ServiceInstanceResolver$1.invoke(AbstractJaxWsHandler.java:366) at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:150) at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:261) at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:100) at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641) at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600) at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585) at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482) at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:314) at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:608) at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:259) at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:162) at ru.bitel.bgbilling.kernel.container.ws.server.JaxWSAdapter.handle(JaxWSAdapter.java:290) at bitel.billing.server.Executer.doPost(SourceFile:163) at javax.servlet.http.HttpServlet.service(HttpServlet.java:646) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Подозреваю, что это из-за того, что в методе ContractStatusService.contractStatusChange() не вызывается метод ContractStatusManager.recycle(). |
Автор: | stark [ 19 июл 2016, 14:28 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
vkulakov писал(а): Подозреваю, что это из-за того, что в методе ContractStatusService.contractStatusChange() не вызывается метод ContractStatusManager.recycle(). А вы уверены что этот сервис? Там просто вызов один раз всего идет, нет цикла никакого . Не должно создавать столько preparestatement. |
Автор: | vkulakov [ 19 июл 2016, 14:32 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
ContractStatusService.contractStatusChange() вызывается в цикле снаружи (в моём коде). |
Автор: | stark [ 19 июл 2016, 15:02 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
vkulakov писал(а): ContractStatusService.contractStatusChange() вызывается в цикле снаружи (в моём коде). Судя по стеку вы его не из динамического скрипта вызываете, а с помощью http-запроса. А это разные запросы, разные соединения, разные preparedStatment. Вы бы поискали в своем скрипте в другом месте. |
Автор: | vkulakov [ 19 июл 2016, 15:42 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
Вызываю в динамическом коде, точно не через HTTP-запрос. Вот метод execute() моего кода: Код: @Override
public void execute(Setup setup, ConnectionSet conns) throws Exception { this.conn = conns.getConnection(); this.setup = setup; ContractService cs = ((ServerContext) ServerContext.get()).getService(ContractService.class, 0); ContractStatusService css = ((ServerContext) ServerContext.get()).getService(ContractStatusService.class, 0); try { List<TContract> tContracts = listTContracts(); for(TContract tContract : tContracts) { List<Contract> contracts = cs.contractList(tContract.getConvertedTitle(), null, -1, 0, null, false, false, false, null); if(contracts.size() == 0) { logger.error("Договор не найден [id=" + tContract.getId() + ", title=" + tContract.getConvertedTitle() + "]"); continue; } if(contracts.size() > 1) { logger.error("Найдено слишком много договоров [id=" + tContract.getId() + ", title=" + tContract.getConvertedTitle() + "]"); continue; } Contract contract = contracts.get(0); List<ContractStatus> statuses = css.contractStatusList(contract.getId(), new Date()); if(statuses.size() == 0) { logger.error("Статус договора не найден [id=" + contract.getId() + ", title=" + contract.getTitle() + "]"); continue; } if(statuses.size() > 1) { logger.error("Найдено слишком много статусов договоров [id=" + contract.getId() + ", title=" + contract.getTitle() + "]"); continue; } ContractStatus oldStatus = statuses.get(0); if(oldStatus.getStatus() == 0 && tContract.isStatus()) { //logger.info("Изменение статуса договора не требуется [id=" + tContract.getId() + "|" + contract.getId() + ", title=" + tContract.getTitle() + "|" + contract.getTitle() + ", status=" + tContract.isStatus() + "|" + oldStatus.getStatus() + "]"); continue; } if(oldStatus.getStatus() != 0 && !tContract.isStatus()) { //logger.info("Изменение статуса договора не требуется [id=" + tContract.getId() + "|" + contract.getId() + ", title=" + tContract.getTitle() + "|" + contract.getTitle() + ", status=" + tContract.isStatus() + "|" + oldStatus.getStatus() + "]"); continue; } ContractStatus newStatus = new ContractStatus(); newStatus.setStatus((tContract.isStatus() ? 0 : 3)); newStatus.setContractId(contract.getId()); newStatus.setDateFrom(new Date()); newStatus.setComment("Синхронизация статуса с биллингом"); css.contractStatusChange(contract.getId(), newStatus, false); logger.info("Статус договора изменён [id=" + tContract.getId() + "|" + contract.getId() + ", title=" + tContract.getTitle() + "|" + contract.getTitle() + ", status=" + tContract.isStatus() + "|" + oldStatus.getStatus() + " => " + newStatus.getStatus() + "]"); } } finally { closeConnection(technor); } logger.info("Синхронизация статусов договоров завершена"); } |
Автор: | Ildar [ 20 июл 2016, 10:44 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
vkulakov писал(а): ContractStatusService.contractStatusChange() вызывается в цикле снаружи (в моём коде). Спасибо. Исправлено. Будет доступно в следующем обновлении. |
Автор: | barguzin2 [ 12 янв 2017, 15:02 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
Код: java.lang.RuntimeException: http://forum.bitel.ru/viewtopic.php?t=7369 at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:426) at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:48) at ru.bitel.bgbilling.server.util.ServerUtils.closeConnection(ServerUtils.java:577) at ru.bitel.bgbilling.server.util.ServerUtils.closeConnection(ServerUtils.java:559) at bitel.billing.server.bill.BillDocsSenderForAll.executeTask(BillDocsSenderForAll.java:87) at bitel.billing.server.task.bean.RunTask.run(RunTask.java:47) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Код: bill: вер. 7.0.111 / 09.12.2016 13:27:55
|
Автор: | stark [ 20 янв 2017, 01:35 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
Надо всю ошибку целиком со всеми sql-запросами. |
Автор: | arj57 [ 09 мар 2017, 15:49 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
Добрый день! Через некоторое время после запуска биллинга в статусе MariaDB Prepared_stmt_count достигает ограничения ( у меня 16382), и MariaDB предупреждает о большом количестве незакрытых Prepared statements. Одна из ситуаций: При выборе пункта меню "Просмотр баланса" (супердоговор) в личном кабинете Prepared_stmt_count стабильно увеличивается на 2. В general log MariaDB при этом следующие запросы: Код: Time Id Command Argument 170309 14:20:14 1379051 Query SELECT 1 1379051 Query SET autocommit=0 1379051 Execute SELECT * FROM contract WHERE id=? 1379051 Prepare SELECT * FROM contract WHERE id=? 1379051 Execute SELECT * FROM contract WHERE id=8787 1379051 Prepare SELECT summa1 FROM contract_balance WHERE cid=? AND yy=? AND mm=? 1379051 Execute SELECT summa1 FROM contract_balance WHERE cid=8787 AND yy=2017 AND mm=3 1379051 Prepare SELECT p.id, p.cid, p.comment, p.dt, p.pt, p.summa, p.uid, p.lm FROM contract_payment AS p WHERE p.cid IN (8787,8788) AND dt>=? AND dt<=? ORDER BY dt 1379051 Execute SELECT p.id, p.cid, p.comment, p.dt, p.pt, p.summa, p.uid, p.lm FROM contract_payment AS p WHERE p.cid IN (8787,8788) AND dt>='2017-03-01' AND dt<='2017-03-31' ORDER BY dt 1379051 Close stmt 1379051 Prepare SELECT * FROM contract_payment_types WHERE id IN ( 20 ) 1379051 Execute SELECT * FROM contract_payment_types WHERE id IN ( 20 ) 1379051 Prepare SELECT t2.title, t1.summa, t1.dt, t1.comment FROM contract_charge AS t1 LEFT JOIN contract_charge_types AS t2 ON t1.pt=t2.id WHERE t1.cid IN ( 8787,8788 ) AND t1.dt>=? AND t1.dt<? ORDER BY t1.dt 1379051 Execute SELECT t2.title, t1.summa, t1.dt, t1.comment FROM contract_charge AS t1 LEFT JOIN contract_charge_types AS t2 ON t1.pt=t2.id WHERE t1.cid IN ( 8787,8788 ) AND t1.dt>='2017-03-01' AND t1.dt<'2017 1379051 Close stmt 1379051 Prepare SELECT t2.title, ROUND(t1.summa,2) FROM contract_account AS t1 LEFT JOIN service AS t2 ON t1.sid=t2.id WHERE cid IN ( 8787,8788 ) AND mm=? AND yy=? 1379051 Execute SELECT t2.title, ROUND(t1.summa,2) FROM contract_account AS t1 LEFT JOIN service AS t2 ON t1.sid=t2.id WHERE cid IN ( 8787,8788 ) AND mm=3 AND yy=2017 1379051 Close stmt 1379051 Prepare SELECT * FROM contract WHERE id=? 1379051 Execute SELECT * FROM contract WHERE id=8787 1379051 Close stmt 1379051 Prepare SELECT * FROM contract WHERE scid=? AND sub_mode=? ORDER BY title 1379051 Execute SELECT * FROM contract WHERE scid=8787 AND sub_mode=1 ORDER BY title 1379051 Close stmt 1379051 Query commit 1379051 Query SELECT 1 1379051 Query rollback 1379051 Query SET autocommit=1 1379051 Close stmt Никакие скрипты здесь не используются. Код: Клиент: вер. 7.0.858 / 02.12.2016 19:26:46
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_92 Сервер: вер. 7.0.1161 / 02.12.2016 19:25:39 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_102 bill: вер. 7.0.110 / 02.12.2016 19:25:48 card: вер. 7.0.40 / 22.08.2016 16:40:03 dialup: вер. 7.0.319 / 29.08.2016 16:38:40 drweb: вер. 7.0.73 / 08.04.2016 17:52:33 email: вер. 7.0.181 / 02.12.2016 16:05:50 inet: вер. 7.0.707 / 02.12.2016 16:03:16 ipn: вер. 7.0.261 / 24.11.2016 20:04:21 mps: вер. 7.0.205 / 10.11.2016 16:31:26 npay: вер. 7.0.199 / 05.10.2016 13:38:35 phone: вер. 7.0.280 / 24.10.2016 18:05:25 rentsoft: вер. 7.0.66 / 24.11.2016 20:07:12 reports: вер. 7.0.224 / 28.11.2016 16:44:14 rscm: вер. 7.0.183 / 10.11.2016 16:31:29 ru.bitel.bgbilling.plugins.cladr: вер. 7.0.123 / 08.04.2016 17:52:32 trayinfo: вер. 7.0.175 / 10.06.2016 17:00:23 tv: вер. 7.0.239 / 30.11.2016 18:20:31 voiceip: вер. 7.0.190 / 02.12.2016 16:07:44 |
Автор: | Phricker [ 09 мар 2017, 16:01 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
https://forum.bitel.ru/viewtopic.php?f=22&t=11667 |
Автор: | arj57 [ 10 мар 2017, 09:30 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
Спасибо! Очень даже помогло. |
Автор: | dbadm [ 25 апр 2017, 15:56 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
Здравствуйте, мне сюда с этим? Код: 04-25/03:16:20 ERROR [pool-2-thread-2] DefaultServerSetup - Many statements was open at connection close:
com.mysql.jdbc.ServerPreparedStatement[6] - SELECT tree_id, date1, date2, emid, eid, 1, pos FROM contract_tariff INNER JOIN tariff_plan ON contract_tariff.tpid=tariff_plan.id WHERE cid=4657 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND ( isNull(date2) OR date2='0000-00-00' OR date2>='2017-04-25' ) UNION SELECT tree_id, date1, date2, emid, eid, 0, pos FROM contract_tree_link WHERE cid=4657 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND (date2 IS NULL OR date2>='2017-04-25') ORDER BY 4 DESC, 5 DESC, 6 ASC, 7 ASC com.mysql.jdbc.ServerPreparedStatement[10] - SELECT tree_id, date1, date2, emid, eid, 1, pos FROM contract_tariff INNER JOIN tariff_plan ON contract_tariff.tpid=tariff_plan.id WHERE cid=731 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND ( isNull(date2) OR date2='0000-00-00' OR date2>='2017-04-25' ) UNION SELECT tree_id, date1, date2, emid, eid, 0, pos FROM contract_tree_link WHERE cid=731 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND (date2 IS NULL OR date2>='2017-04-25') ORDER BY 4 DESC, 5 DESC, 6 ASC, 7 ASC com.mysql.jdbc.ServerPreparedStatement[12] - SELECT tree_id, date1, date2, emid, eid, 1, pos FROM contract_tariff INNER JOIN tariff_plan ON contract_tariff.tpid=tariff_plan.id WHERE cid=4429 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND ( isNull(date2) OR date2='0000-00-00' OR date2>='2017-04-25' ) UNION SELECT tree_id, date1, date2, emid, eid, 0, pos FROM contract_tree_link WHERE cid=4429 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND (date2 IS NULL OR date2>='2017-04-25') ORDER BY 4 DESC, 5 DESC, 6 ASC, 7 ASC .... com.mysql.jdbc.ServerPreparedStatement[106] - SELECT tree_id, date1, date2, emid, eid, 1, pos FROM contract_tariff INNER JOIN tariff_plan ON contract_tariff.tpid=tariff_plan.id WHERE cid=3947 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND ( isNull(date2) OR date2='0000-00-00' OR date2>='2017-04-25' ) UNION SELECT tree_id, date1, date2, emid, eid, 0, pos FROM contract_tree_link WHERE cid=3947 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND (date2 IS NULL OR date2>='2017-04-25') ORDER BY 4 DESC, 5 DESC, 6 ASC, 7 ASC com.mysql.jdbc.ServerPreparedStatement[107] - SELECT tree_id, date1, date2, emid, eid, 1, pos FROM contract_tariff INNER JOIN tariff_plan ON contract_tariff.tpid=tariff_plan.id WHERE cid=2921 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND ( isNull(date2) OR date2='0000-00-00' OR date2>='2017-04-25' ) UNION SELECT tree_id, date1, date2, emid, eid, 0, pos FROM contract_tree_link WHERE cid=2921 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND (date2 IS NULL OR date2>='2017-04-25') ORDER BY 4 DESC, 5 DESC, 6 ASC, 7 ASC com.mysql.jdbc.ServerPreparedStatement[108] - SELECT tree_id, date1, date2, emid, eid, 1, pos FROM contract_tariff INNER JOIN tariff_plan ON contract_tariff.tpid=tariff_plan.id WHERE cid=2921 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND ( isNull(date2) OR date2='0000-00-00' OR date2>='2017-04-25' ) UNION SELECT tree_id, date1, date2, emid, eid, 0, pos FROM contract_tree_link WHERE cid=2921 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND (date2 IS NULL OR date2>='2017-04-25') ORDER BY 4 DESC, 5 DESC, 6 ASC, 7 ASC com.mysql.jdbc.ServerPreparedStatement[109] - SELECT tree_id, date1, date2, emid, eid, 1, pos FROM contract_tariff INNER JOIN tariff_plan ON contract_tariff.tpid=tariff_plan.id WHERE cid=694 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND ( isNull(date2) OR date2='0000-00-00' OR date2>='2017-04-25' ) UNION SELECT tree_id, date1, date2, emid, eid, 0, pos FROM contract_tree_link WHERE cid=694 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND (date2 IS NULL OR date2>='2017-04-25') ORDER BY 4 DESC, 5 DESC, 6 ASC, 7 ASC java.lang.RuntimeException: http://forum.bitel.ru/viewtopic.php?t=7369 at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:426) at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:48) at ru.bitel.bgbilling.server.util.ServerUtils.closeConnection(ServerUtils.java:584) at ru.bitel.bgbilling.modules.cerbercrypt.server.task.Synchronizer.executeTask(Synchronizer.java:132) at ru.bitel.bgbilling.kernel.task.server.TaskBase.run(TaskBase.java:80) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 04-25/03:16:20 INFO [pool-2-thread-2] Synchronizer - Task finished time=77557 ms. |
Автор: | dimOn [ 25 апр 2017, 22:15 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
да, версии из about бы ещё, в Synchronizer вроде всё починяли |
Автор: | dbadm [ 26 апр 2017, 03:13 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
Пардон, Код: Информация о версии:
Клиент: вер. 7.0.880 / 10.03.2017 17:18:18 os: Windows 10; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_102 Сервер: вер. 7.0.1211 / 15.03.2017 18:44:15 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_102 cerbercrypt: вер. 7.0.232 / 21.02.2017 21:26:14 mps: вер. 7.0.210 / 01.03.2017 18:28:29 npay: вер. 7.0.206 / 15.03.2017 18:44:23 payonline: вер. 7.0.76 / 08.01.2017 19:08:27 reports: вер. 7.0.231 / 15.03.2017 18:48:01 rscm: вер. 7.0.184 / 10.02.2017 13:51:11 ru.bitel.bgbilling.plugins.cashcheck: вер. 7.0.113 / 15.02.2017 14:41:09 ru.bitel.bgbilling.plugins.crm: вер. 7.0.198 / 07.11.2016 18:45:32 ru.bitel.bgbilling.plugins.dispatch: вер. 7.0.92 / 25.01.2017 17:01:23 sberbank: вер. 7.0.60 / 01.03.2017 18:59:19 trayinfo: вер. 7.0.175 / 10.06.2016 17:00:23 Окружение: Клиент: os: Windows 10 amd64, 10.0 java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_102 jre home: C:\Program Files\Java\jre1.8.0_102 memory (use/total/max): 123M/223M/228M default tz: 26.04.2017 00:09 MSK +0300 (Europe/Moscow) user tz: 26.04.2017 00:09 MSK +0300 (Europe/Moscow) locale: ru_RU Сервер: os: Linux amd64, 2.6.18-419.el5 java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_102 jre home: /opt/java/jdk1.8.0_102/jre default tz: 26.04.2017 00:09 MSK +0300 (Europe/Moscow) memory (use/total/max): 86M/213M/228M db time: master: 26.04.2017 00:09 MSK db charset: connection: cp1251(cp1251_general_ci), database: cp1251(cp1251_general_ci) locale: ru_RU uptime: Started: 25.04.2017 05:30:51 Uptime: 0 d 18:38:10 Третьи стороны: Fugue Icons. Copyright © 2011 Yusuke Kamiyamane. All rights reserved. http://p.yusukekamiyamane.com/ Silk icon set. Copyright © Mark James. All rights reserved. http://www.famfamfam.com/lab/icons/silk/ |
Автор: | dimOn [ 26 апр 2017, 21:30 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
отправлено на доработку |
Автор: | borisk [ 30 апр 2017, 15:55 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
Добрый день! Тут понадобилось написать свой скрипт деактивации тарифных опций. В логах начали появляться сообщения по теме: И это точно не мои, в моем скрипте таких запросов нет. Код: com.mysql.jdbc.ServerPreparedStatement[366] - SELECT * FROM contract_tariff_option WHERE id=466 com.mysql.jdbc.ServerPreparedStatement[368] - SELECT * FROM tariff_option WHERE id= 3 com.mysql.jdbc.ServerPreparedStatement[370] - SELECT * FROM tariff_option WHERE (da te1 IS NULL OR date1<=null) AND (date2 IS NULL OR null<=date2) ORDER BY title com.mysql.jdbc.ServerPreparedStatement[373] - SELECT * FROM contract_tariff_option WHERE id=467 com.mysql.jdbc.ServerPreparedStatement[374] - SELECT * FROM tariff_option WHERE id= 1 com.mysql.jdbc.ServerPreparedStatement[375] - SELECT * FROM tariff_option WHERE (da te1 IS NULL OR date1<=null) AND (date2 IS NULL OR null<=date2) ORDER BY title com.mysql.jdbc.ServerPreparedStatement[376] - SELECT * FROM contract_tariff_option WHERE id=472 com.mysql.jdbc.ServerPreparedStatement[377] - SELECT * FROM tariff_option WHERE id= 2 com.mysql.jdbc.ServerPreparedStatement[378] - SELECT * FROM tariff_option WHERE (da te1 IS NULL OR date1<=null) AND (date2 IS NULL OR null<=date2) ORDER BY title com.mysql.jdbc.ServerPreparedStatement[379] - SELECT * FROM contract_tariff_option WHERE id=473 com.mysql.jdbc.ServerPreparedStatement[380] - SELECT * FROM tariff_option WHERE id= 2 Для деактивации использую код: Код: context.newService( TariffOptionService.class, 0 ).contractTariffOptionDeactivate( cid, oid );
|
Автор: | Cromeshnic [ 01 май 2017, 11:34 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
Я в 5.2 без сервисов делал, уже не помню, почему: Код: Connection con = connectionSet.getConnection(); ContractTariffOptionActivateManager ctoam = new ContractTariffOptionActivateManager(con); ... ctoam.deactivateOption(0, cid, contractOptionId); print("Отключена опция " + option_id + " на договоре "+cid); Thread.sleep(500); ... ctoam.recycle(); ServerContext ctx = ThreadContext.get(ServerContext.class); ctx.commit(); |
Автор: | barguzin2 [ 02 май 2017, 12:44 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
уже отправлял, но так и не пофиксили... вывожу на просмотр все документы и нажимаю кнопку [Разослать на почту]. Версия 7.0 Код: scheduler 05-02/13:25:34 ERROR [pool-1-thread-5] DefaultServerSetup - Many statements was open at connection close:
com.mysql.jdbc.ServerPreparedStatement[404772] - SELECT * FROM contract WHERE id=544 тут пачка таких же строк java.lang.RuntimeException: http://forum.bitel.ru/viewtopic.php?t=7369 at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:426) at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:48) at ru.bitel.bgbilling.server.util.ServerUtils.closeConnection(ServerUtils.java:584) at ru.bitel.bgbilling.server.util.ServerUtils.closeConnection(ServerUtils.java:566) at bitel.billing.server.bill.BillDocsSenderForAll.executeTask(BillDocsSenderForAll.java:87) at bitel.billing.server.task.bean.RunTask.run(RunTask.java:47) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) |
Автор: | dimOn [ 02 май 2017, 13:18 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
для 7.0+ это исправлено |
Автор: | stark [ 16 май 2017, 16:38 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
borisk писал(а): Для деактивации использую код: Код: context.newService( TariffOptionService.class, 0 ).contractTariffOptionDeactivate( cid, oid ); Надо не newService, а getService |
Автор: | spectrum [ 01 июн 2017, 14:53 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement (CRM) |
Выполняется следующий код: Код: public void chargeNpay(Vars vars, ArrayList<Integer> chargingContractsList) { String email = null; int serviceSet = 0; String cids = chargingContractsList.get(0).toString(); //Формируем строку из списка договоров. Количество около 300 шт if (chargingContractsList.size() > 1) { for (int i = 1; i < chargingContractsList.size(); i++) { cids = cids + "," + chargingContractsList.get(i).toString(); } } new RunTaskDataManager(vars.con) .addTask(new Recalculator(NPAY_MID, Calendar.getInstance(), email, serviceSet, cids, "")); } В логах: Код: 06-01/12:01:11 INFO [Thread-12] RunTaskDataManager - get next tasks: new task id=22483 bitel.billing.server.npay.Recalculator@1f1c8a6 06-01/12:01:11 INFO [Thread-12] TaskRunProcessor - Running Task: bitel.billing.server.npay.Recalculator@1f1c8a6 06-01/12:01:11 INFO [pool-1-thread-8] Recalculator - PaymentRecalculator time: 01.06.2017 23 06-01/12:01:11 INFO [pool-1-thread-8] Calculator - Memory total: 68 157 440; max: 239 075 328; free: 20 726 096 Memory pools: Non-heap memory[Code Cache]: max: 251 658 240; used: 29 536 704; peek: 29 548 352 Non-heap memory[Metaspace]: max: -1; used: 30 984 232; peek: 30 984 232 Non-heap memory[Compressed Class Space]: max: 1 073 741 824; used: 3 321 064; peek: 3 342 288 Heap memory[PS Eden Space]: max: 84 934 656; used: 3 044 768; peek: 52 953 088 Heap memory[PS Survivor Space]: max: 2 097 152; used: 229 376; peek: 8 646 240 Heap memory[PS Old Gen]: max: 179 306 496; used: 44 157 200; peek: 59 567 016 Thread count: 55 06-01/12:01:13 INFO [pool-2-thread-7] LoggingPrintStream - FractionalChrageNpay end 06-01/12:01:13 ERROR [pool-2-thread-7] DefaultServerSetup - Many statements was open at connection close: com.mysql.jdbc.ServerPreparedStatement[25] - SELECT * FROM global_script_link WHERE id=8 com.mysql.jdbc.PreparedStatement@3f4858e8: SELECT * FROM contract WHERE id=5118 com.mysql.jdbc.PreparedStatement@195f3364: SELECT * FROM contract WHERE id=4610 com.mysql.jdbc.PreparedStatement@2538e770: SELECT * FROM contract WHERE id=4610 com.mysql.jdbc.PreparedStatement@4916910b: SELECT * FROM contract WHERE id=4610 Плюс много таких строк . . . java.lang.RuntimeException: http://forum.bitel.ru/viewtopic.php?t=7369 at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:426) at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:48) at ru.bitel.common.sql.ConnectionSet.recycle(ConnectionSet.java:272) at ru.bitel.bgbilling.kernel.base.server.DefaultContext.destroy(DefaultContext.java:37) at ru.bitel.bgbilling.kernel.container.managed.ServerContext.destroy(ServerContext.java:400) at ru.bitel.common.worker.ThreadContext.pop(ThreadContext.java:54) at ru.bitel.bgbilling.kernel.task.server.TaskBase.run(TaskBase.java:90) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 06-01/12:01:13 INFO [pool-2-thread-7] GlobalScriptTimer - Task finished time=13181 ms. 06-01/12:01:15 INFO [pool-1-thread-8] Calculator - Setting balances for independ and subs.. 06-01/12:01:15 INFO [pool-1-thread-8] Calculator - Selected. 06-01/12:01:21 INFO [pool-1-thread-8] Calculator - Selecting sub account 06-01/12:01:21 INFO [pool-1-thread-8] Calculator - Selected. 06-01/12:01:21 INFO [pool-1-thread-8] Calculator - Setting balance for super.. 06-01/12:01:21 INFO [pool-1-thread-8] Calculator - Selected. 06-01/12:01:21 INFO [pool-1-thread-8] Calculator - Task finished time=9818 ms. 06-01/12:01:21 INFO [pool-1-thread-8] Recalculator - RunTask finished time=9818 ms. About: Код: Информация о версии: Клиент: вер. 6.2.855 / 20.03.2017 20:56:51 os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_121 Сервер: вер. 6.2.1169 / 21.03.2017 18:23:05 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_60 bvcom: вер. 6.2.95 / 14.07.2016 14:11:19 card: вер. 6.2.43 / 16.03.2017 23:47:47 enaza: вер. 6.2.60 / 10.03.2017 18:11:30 gorod: вер. 6.2.164 / 01.03.2016 00:18:32 inet: вер. 6.2.714 / 20.03.2017 20:51:11 mps: вер. 6.2.223 / 21.03.2017 16:41:20 npay: вер. 6.2.198 / 03.02.2017 21:00:04 rentsoft: вер. 6.2.63 / 04.10.2016 19:16:26 reports: вер. 6.2.216 / 15.03.2017 19:48:19 Сервер: os: Linux amd64, 3.10.0-229.11.1.el7.x86_64 java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_60 jre home: /opt/jdk1.8.0_60/jre default tz: 01.06.2017 14:23 MSK +0300 (Europe/Moscow) db time: master: 01.06.2017 14:23 MSK db charset: connection: utf8(utf8_unicode_ci), database: utf8(utf8_unicode_ci) locale: ru_RU uptime: Started: 12.05.2017 06:48:24 Uptime: 20 d 07:35:19 Чем чревата эта ошибка и как исправить? UPD: кстати, в SELECT много повторяющихся строк с одним и тем же id. Это и в переведенном отрывке видно. |
Страница 11 из 12 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |