点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
昨晚,我的控制台日志网站上出现以下错误。
为解决该问题,MySQL服务已重新启动,该问题不再出现,但我想了解该问题的出现方式。
信息| jvm 8 | 主| 2015/09/02 18:45:55.994 | [0; 31mERROR [hybrisHTTP95] [81.250.91.222] [JDBCConnectionPool] ---------------------------------- ------
信息| jvm 8 | 主| 2015/09/02 18:45:55.994 | CEST 2015 Wed Sep 02 18:45:55 CEST:获取数据库连接时出现问题
信息| jvm 8 | 主| 2015/09/02 18:45:55.994 | 引发的异常消息是:等待空闲对象超时
信息| jvm 8 | 主| 2015/09/02 18:45:55.994 | (启用" db.pool.dumpThreadsOnConnectionError"以查看完整的线程转储)
信息| jvm 8 | 主| 2015/09/02 18:45:55.994 | ----------------------------------------
信息| jvm 8 | 主| 2015/09/02 18:45:55.994 | [msept。 2015年2月2日下午6:45:55 org.apache.catalina.core.StandardWrapperValve调用
信息| jvm 8 | 主| 2015/09/02 18:45:55.994 | 严重:路径为[]的Servlet [DispatcherServlet]的Servlet.service()抛出异常[请求处理失败; 嵌套的异常是de.hybris.platform.persistence.hjmp.HJMPException:非法异常类型:java.util.NoSuchElementException],其根本原因是
信息| jvm 8 | 主| 2015/09/02 18:45:55.994 | java.util.NoSuchElementException:等待空闲对象的超时
信息| jvm 8 | 主| 2015/09/02 18:45:55.994 | 在org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1174)
信息| jvm 8 | 主| 2015/09/02 18:45:55.994 | 在de.hybris.platform.jdbcwrapper.JDBCConnectionPool.borrowConnection(JDBCConnectionPool.java:83)
信息| jvm 8 | 主| 2015/09/02 18:45:55.994 | 在de.hybris.platform.jdbcwrapper.ConnectionErrorCheckingJDBCConnectionPool.borrowConnection(ConnectionErrorCheckingJDBCConnectionPool.java:87)
信息| jvm 8 | 主| 2015/09/02 18:45:55.994 | 在de.hybris.platform.jdbcwrapper.DataSourceImpl.getFromPool(DataSourceImpl.java:422)
信息| jvm 8 | 主| 2015/09/02 18:45:55.994 | 在de.hybris.platform.jdbcwrapper.DataSourceImpl.doGetConnection(DataSourceImpl.java:397)
...
另一个例子,
信息| jvm 8 | 主| 2015/09/02 18:45:56.096 | [0; 31mERROR [hybrisHTTP87] [注册表]无法激活租户<< master >>,因为当前其数据库连接已丢失
信息| jvm 8 | 主| 2015/09/02 18:45:56.096 | [msept。 2015年2月2日下午6:45:56 org.apache.catalina.core.StandardWrapperValve调用
信息| jvm 8 | 主| 2015/09/02 18:45:56.096 | GRAVE:" Servlet.service()"注入servlet DispatcherServlet发生异常的情况
信息| jvm 8 | 主| 2015/09/02 18:45:56.096 | java.lang.IllegalStateException:无法将租户切换到<< master >>
信息| jvm 8 | 主| 2015/09/02 18:45:56.096 | 在de.hybris.platform.core.Registry.activateTenant(Registry.java:634)
信息| jvm 8 | 主| 2015/09/02 18:45:56.096 | 在de.hybris.platform.core.Registry.setCurrentTenant(Registry.java:476)
信息| jvm 8 | 主| 2015/09/02 18:45:56.096 | 在de.hybris.platform.core.Registry.setCurrentTenantByID(Registry.java:608)
信息| jvm 8 | 主| 2015/09/02 18:45:56.096 | 在de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain.activateTenantFromContext(AbstractPlatformFilterChain.java:178)
信息| jvm 8 | 主| 2015/09/02 18:45:56.096 | 在de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain.doFilterInternal(AbstractPlatformFilterChain.java:148)
...
数据库连接正在工作。
数据库实例已启动,正在运行且可访问。
我在MySQL的error.log中没有发现任何错误。
未达到最大连接数。
从网站服务器到数据库的连接正常(通过telnet)。
我在系统方面没有明显的问题。
下面,您将在重新启动之前找到mysqltunner的统计信息:
root @ GAPIX1:〜#mysqltuner
>> MySQLTuner 1.0.1-Major Hayden
>>错误报告,功能请求和可从http://mysqltuner.com/下载
>>使用'--help'运行以获取其他选项和输出过滤
--------一般统计---------------------------------------- ----------
[-]跳过版本检查MySQLTuner脚本
[确定]当前正在运行受支持的MySQL版本5.5.38-0ubuntu0.12.04.1-log
[确定]在64位架构上运行
--------存储引擎统计信息--------------------------------------- ----
[-]状态:-存档-BDB-联合+ InnoDB -ISAM -NDBCluster
[-] InnoDB表中的数据:8G(表:432)
[-] PERFORMANCE_SCHEMA表中的数据:0B(表:17)
[!!]碎片表总数:54
- - - - 性能指标 - - - - - - - - - - - - - - - - - - - - ---------
[-]拍摄时间:70d 0h 58m 27s(2B q [340.837 qps],3M conn,TX:2080B,RX:465B)
[-]读/写:89%/11%
[-]缓冲区总数:每线程34.4G全局+ 10.2M(最多1000个线程)
[确定]可能的最大内存使用量:44.4G(已安装RAM的71%)
[确定]慢查询:0%(59K/2B)
[!!]最高连接使用率:87%(879/1000)
[确定]密钥缓冲区大小/MyISAM索引总数:1.0G/94.0K
[确定]关键缓冲区命中率:100.0%(4B缓存/7次读取)
[!!]查询缓存已禁用
[确定]需要临时表的排序:0%(47K临时排序/215M排序)
[!!]执行时没有索引:118495
[确定]在磁盘上创建的临时表:0%(磁盘上14K/总计86M)
[确定]线程缓存命中率:99%(创建4K/3M连接)
[确定]表缓存命中率:24%(4K打开/16K打开)
[确定]使用的打开文件限制:0%(20/9K)
[确定]立即获得表锁:100%(立即1B锁/1B锁)
[确定] InnoDB数据大小/缓冲池:8.1G/32.0G
--------建议----------------------------------------- ------------
一般建议:
运行OPTIMIZE TABLE来对表进行碎片整理以获得更好的性能
减少或消除持久连接以减少连接使用量
调整联接查询以始终利用索引
要调整的变量:
max_connections(> 1000)
wait_timeout(<600)
Interactive_timeout(<600)
query_cache_size(> = 8M)
join_buffer_size(> 1.0M,或始终对联接使用索引)
我强烈认为这是一个锁,但是目前没有任何动作可以完全阻止数据库。
我希望您对此主题有意见,也希望在https://wiki.hybris.com/display/release5/Include+-+projectproperties+-+MySQL+parameters
我将启用选项" db.pool.dumpThreadsOnConnectionError"以查看下一次完整的线程转储,但我希望它不再发生。
我希望有人能帮助我。
亲切的问候,
hybris应用程序与数据库服务器之间的网络问题可能会导致此问题,或者防火墙可能会断开空闲连接。 确保,如果数据库和应用程序服务器之间有防火墙,请确保防火墙不会断开空闲连接
坏轨。 没有网络/防火墙问题。 问题没有再出现。
如果我有新闻,我会及时通知您。
嗨Matthieu,
我也遇到了同样的问题,您是否能够找到解决此问题的方法,并且如果您可以共享信息也将有所帮助。
Teja致谢下次发生错误时,您应该获取线程转储-如果存在资源短缺的情况(缺少任何可用的连接),则转储中应包含大量正在积极使用连接的线程。 您的代码中是否有自定义事务处理?
这似乎是一个常见的mysql问题: https://stackoverflow.com/questions/17813630/mysql-5-6-headaches-on-mac-osx/22773887#22773887
一周热门 更多>