0 0

hibernate使用memcached作为二级缓存,怎么构建memcached集群0

我使用memcached作为hibernate的二级缓存实现,在memcached单节点的情况下,程序运行没问题。
后来想做一个memcached的集群,就使用了magent来做。但是使用magent之后,hibernate的二级缓存就报超时异常:
16:29:13,832 DEBUG ReadWriteCache:160 - Cached: com.ct.po.TCtBizstatusType#1001
16:29:13,832 DEBUG ReadWriteCache:148 - Caching: com.ct.po.TCtBizstatusType#990
16:29:14,834 WARN LoggingMemcacheExceptionHandler:14 - Cache 'get' failed for key [quality.cache.ehcache.com.ct.po.TCtBizstatusType:0:990]
net.spy.memcached.OperationTimeoutException: Timeout waiting for value
at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:771)
at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:784)
at com.googlecode.hibernate.memcached.spymemcached.SpyMemcache.get(SpyMemcache.java:32)
at com.googlecode.hibernate.memcached.MemcachedCache.memcacheGet(MemcachedCache.java:116)
at com.googlecode.hibernate.memcached.MemcachedCache.get(MemcachedCache.java:164)
at org.hibernate.cache.ReadWriteCache.put(ReadWriteCache.java:153)
at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:156)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842)
at org.hibernate.loader.Loader.doQuery(Loader.java:717)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2144)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2028)
at org.hibernate.loader.Loader.list(Loader.java:2023)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:393)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at com.ctower.dao.impl.BaseDaoImpl.searchPaginated(BaseDaoImpl.java:65)
at com.ctower.dao.impl.BizstatusTypeDaoImpl.queryBizstatusTypeInfo(BizstatusTypeDaoImpl.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:203)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:162)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:209)
at $Proxy10.queryBizstatusTypeInfo(Unknown Source)
at com.ctower.web.action.BizstatusTypeAction.queryBizstatusType(BizstatusTypeAction.java:65)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.ctower.filter.LoggerFilter.doFilter(LoggerFilter.java:103)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.ctower.filter.SessionFilter.doFilterInternal(SessionFilter.java:18)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.util.concurrent.TimeoutException: Timed out waiting for operation
at net.spy.memcached.MemcachedClient$OperationFuture.get(MemcachedClient.java:1437)
at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:764)
... 73 more

然后我自己又做一个手动连接magent的代码,发现只能往里面放简单类型,放自定义的对象的时候,程序就运行不下去,一直卡住了,在magent的服务器上 telnet 地址 magent的接口,还可以连接上,但是stats的时候也卡住了。
但如果是访问memcached单节点,就可以存取对象。

我想请问:
1:在hibernate使用memcached做二级缓存的时候,是否可以使用magent
2:在hibernate使用memcached做二级缓存的时候,怎么能实现memcached的集群
3:在java代码中是否有对应magent的API(以上情况中,java所使用的API都是memcached的)

请各路大神指教!
2014年6月10日 16:36

2个答案 按时间排序 按投票排序

0 0

hibernate-memcached 本身支持集群,不需要使用magent.
hibernate.memcached.servers=127.0.0.1:12000,127.0.0.1:12001,127.0.0.1:12002

2015年7月02日 12:26
0 0

我不知给你提供答案的
只是前一段时间我也在做memcache,尝试将memcached做hibernate的二级缓存,但我发现几乎没什么效果;将自定义的类设置使用二级缓存确实会将数据缓存在memcache中,但是在查询的时候只有简单的通过id查询才会去memcache中取数据,所以感觉作用不大

2014年6月11日 09:34

相关推荐

    Java环境下Memcached应用详解.docx

    2. **Hibernate Provider**:如果使用Hibernate作为ORM框架,可以自定义Hibernate缓存提供者,将Memcached作为二级缓存。这样,Hibernate查询的结果会被缓存起来,提高数据库访问效率。 3. **Session复制**:利用...

    Hibernate缓存

    Hibernate提供了两种级别的缓存:一级缓存和二级缓存。一级缓存是Session级别的,而二级缓存是SessionFactory级别的全局缓存。这两个缓存都是为了存储持久化对象,以减少与数据库的交互。 1-2 Hibernate缓存分类: ...

    Hibernate缓存深入详解.ppt

    在分布式环境下,二级缓存可以通过配置实现分布式缓存,如使用Redis、Memcached等。这种方式可以在多台服务器之间共享数据,提高系统的可扩展性和性能。同时,需要处理好分布式环境下的数据一致性问题,如采用事件...

    hibernate 缓存

    本篇将深入探讨Hibernate的缓存机制,包括一级缓存和二级缓存,并涉及二级缓存的高级应用——分布式缓存和查询缓存。 ### 1. Hibernate缓存概述 **缓存的作用**:减少对数据库的访问次数,从而提高应用性能。...

    Hibernat缓存

    正确理解和使用一级缓存、二级缓存以及查询缓存,可以显著降低数据库负载,提升应用响应速度,特别是在大数据量和高并发的场景下。开发者应根据实际需求,合理配置和管理这些缓存,以达到最佳的性能效果。

    memcached面试专题.pdf

    memcached则适合在任何规模的网站中使用,并且随着空闲内存的增加,可以轻松扩展memcached集群的规模。 使用memcached时,开发者需要注意一些事项,例如memcached不会自动删除数据项,因此需要自行设计过期策略或...

    memcached面试专题及答案.pdf

    - **客户端哈希算法**:由于各种客户端的哈希算法可能不同,所以不同的客户端可能会将数据存储在Memcached集群的不同节点上。 - **Memcached服务器端行为一致性**:尽管客户端差异,但所有客户端都会看到一致的...

    memcached面试专题1

    第二阶段哈希在memcached服务器端执行,用于在内存中查找实际的数据item。 当客户端(例如Client 1和Client 2)想要存储或获取数据时,它们首先计算key的哈希值,然后选择对应的memcached节点进行通信。假设客户端...

    Hibernate框架中的缓存技术详解

    然而,由于涉及多线程和分布式环境,二级缓存的实现通常需要第三方缓存产品,如EhCache、Redis或Memcached等。在Hibernate中,配置二级缓存需要在配置文件(如hibernate.cfg.xml)中指定缓存提供者,并添加对应的...

    j2EE 缓存 Web前端优化 后台 服务器优化

    - **Hibernate二级缓存**:SessionFactory级别,跨Session,可配置为进程内或集群间共享,缓存查询结果和集合数据。 3. **分布式系统中的缓存(Memcached、Xmemcached)** - **分布式缓存**:在分布式环境中,...

    详解大型网站web服务器缓存.zip

    例如,Java的Spring框架中的Hibernate二級缓存和Redis等内存数据库就是常见的应用缓存解决方案。 接下来是分布式缓存,它是在多台服务器之间共享数据的一种机制,常用于处理海量数据和高并发场景。分布式缓存系统如...

    30_分布式缓存相关面试题的回答技巧总结.zip

    - Redis可以作为数据库使用,而Memcached主要用作缓存。 5. **CAP原理** 分布式系统中的CAP理论指出,一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)无法同时达到最优,必须...

    Xmemcached用户指南.pdf

    7. **Spring和Hibernate集成**:与Spring框架无缝集成,同时支持Hibernate-memcached,作为二级缓存解决方案,可替代Spymemcached。 8. **客户端连接池**:允许创建连接池以应对高并发场景,但需要注意数据独立性和...

    ehcache-memcache-redis三大缓存男高音.docx

    - Ehcache更适合Java环境,尤其适用于本地缓存和Hibernate二级缓存。 - Memcached适用于需要快速、简单键值存储的跨语言环境,适合缓存小型数据。 - Redis因其丰富的数据结构和持久化能力,常用于需要复杂数据操作和...

    大型网站数据库优化大型网站数据库优化.docx

    使用Hibernate和Ecache进行数据持久化和缓存管理,但若追求更高性能,可以考虑使用EJB和WebSphere、WebLogic这样的企业级服务器,并配合Oracle等高性能数据库。 6. **静态化与URL重写**:对高流量内容进行静态化...

    SpringSide4 参考手册

    这些部分讲述了如何进行动态组合查询条件、使用Hibernate二级缓存、以及如何配置数据源和事务管理。 为了提升性能,文档介绍了各种缓存技术,包括Ehcache、Guava Cache以及分布式缓存的实现。还提到了如何在Ehcache...

    NHibernate2.0中文文档

    2. **二级缓存**: 可配置的进程或集群范围的缓存,进一步提升性能,例如使用Redis或Memcached。 **八、NHibernate-3.0.0.Alpha2** 这个版本是NHibernate的早期Alpha版本,可能包含一些新特性和改进,例如性能优化...

Global site tag (gtag.js) - Google Analytics