我的MySQL数据库(Amazon RDS实例)上出现了越来越多的"死锁"和"锁定超时"问题.直到几天前,数据库运行良好.服务器代码(执行查询)的更改没有超过一周.我知道异常是什么,但我对调试和查找导致问题的特定查询/语句的最佳方法感到茫然.
设置信息:
我最好的猜测是设置中的某些东西(Hibernate或MySQL)导致了这个问题.服务器运行良好,然后延迟将通过屋顶导致各种负面行为.发生这种情况时,实例的CPU利用率将接近100%.
休眠设置是:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass"><value>com.mysql.jdbc.Driver</value></property>
<property name="jdbcUrl"><value>XXXX</value></property>
<property name="user"><value>XXXX</value></property>
<property name="password"><value>XXXX</value></property>
<property name="initialPoolSize"><value>3</value></property>
<property name="minPoolSize"><value>3</value></property>
<property name="maxPoolSize"><value>50</value></property>
<property name="idleConnectionTestPeriod"><value>200</value></property>
<property name="acquireIncrement"><value>1</value></property>
<property name="maxStatements"><value>0</value></property>
<property name="numHelperThreads"><value>6</value></property>
</bean>
Run Code Online (Sandbox Code Playgroud)
任何想法在哪里开始调试如果设置中的某些东西可能导致这个问题将不胜感激.
我有一个Java应用程序,它使用Spring/Hibernate(在Amazon Elastic Beanstalk上运行)和普通的Amazon RDS实例.为了分配负载,我正在添加一个只读副本.我将DB.url交换到只读副本并测试了一个只应读取数据的方法(这些方法绝对不使用UPDATE,INSERT或DELETE).但是,应用程序返回错误.
我的问题:为什么只在读取数据时应用程序失败了?如何配置Spring/Hibernate以使用只读副本?
细节:
我得到的错误是:
INFO: Internal error in method IEngageManager.getSimpleExamActivityLiveResults, ARGUMENTS=[
Credentials {
(m) password=0c2a765c057a31c51b68d0f6c75cef93,
(m) email=w1jg
}
]
com.iengage.exceptions.IEException: Internal error in method IEngageManager.getSimpleExamActivityLiveResults, ARGUMENTS=[
Credentials {
(m) password=0c2a765c057a31c51b68d0f6c75cef93,
(m) email=w1jg
}
]
at com.iengage.exceptions.ExceptionWrapper.overridingInvoke(ExceptionWrapper.java:25)
at com.iengage.springobjects.SingletonMethodInterceptor.invoke(SingletonMethodInterceptor.java:18)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621)
at com.iengage.managers.IEngageManager$$EnhancerByCGLIB$$c8a2c385.getSimpleExamActivityLiveResults(<generated>)
at com.iengage.services.IEngageService.getSimpleExamActivityLiveResults(IEngageService.java:379)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at com.sun.xml.ws.api.server.InstanceResolver$1.invoke(InstanceResolver.java:246)
at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146)
at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:257)
at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:93)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:595)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:554)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:539)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:436)
at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:243)
at …Run Code Online (Sandbox Code Playgroud)