我正在工作场所的项目中设置spring-data-gemfire
。但是,连接到GemFire服务器并从我的应用程序检索数据需要花费很长时间。
2020-Mar-13 09:00:10 | TRACE | annotation.ScheduledAnnotationPostProcessor | No @Scheduled annotations found on bean class: class org.springframework.gemfire.client.CLientCacheFactoryBean
2020-Mar-13 09:00:10 | TRACE | support.DefaultListableBeanFactory |Finished creating instance of bean 'gemfireCache'
2020-Mar-13 09:00:42 | TRACE | internal.ClassPathLoader | getResource(gemfire.properties)
2020-Mar-13 09:00:42 | TRACE | internal.ClassPathLoader | getResource trying: sun.misc.Launcher$AppClassLoader@73d16e93
2020-Mar-13 09:00:42 | TRACE | internal.ClassPathLoader | getResource trying: java.net.Launcher$AppClassLoader@73d16e93
.....
[我可以知道为什么从“完成创建bean ..实例”到“ getResource ..”要花40秒以上的时间吗?
当前版本
2.2.1.RELEASE
2.2.1.RELEASE
[当我在家中尝试一个简单的gemfire应用程序时,花了大约5秒钟。
[TRACE] 2020-03-14 16:54:58.623 [main] CachedIntrospectionResults - Found bean property 'propertiesPersister' of type [org.springframework.util.PropertiesPersister]
[TRACE] 2020-03-14 16:54:58.623 [main] CachedIntrospectionResults - Found bean property 'singleton' of type [boolean]
[TRACE] 2020-03-14 16:54:58.626 [main] TypeConverterDelegate - Converting String to [class [Lorg.springframework.core.io.Resource;] using property editor [org.springframework.core.io.support.ResourceArrayPropertyEditor@669253b7
[TRACE] 2020-03-14 16:54:58.627 [main] PathMatchingResourcePatternResolver - Resolved classpath location [META-INF/gemfire-named-queries.properties] to resources []
[TRACE] 2020-03-14 16:54:58.627 [main] DefaultListableBeanFactory - Invoking afterPropertiesSet() on bean with name '(inner bean)#6cc0bcf6'
[TRACE] 2020-03-14 16:54:58.628 [main] DefaultListableBeanFactory - Finished creating instance of bean '(inner bean)#6cc0bcf6'
[TRACE] 2020-03-14 16:54:58.630 [main] DefaultListableBeanFactory - Finished creating instance of bean '(inner bean)#1a6f5124'
[TRACE] 2020-03-14 16:54:58.631 [main] DefaultListableBeanFactory - Creating instance of bean '(inner bean)#49a64d82'
[TRACE] 2020-03-14 16:54:58.635 [main] DefaultListableBeanFactory - Invoking afterPropertiesSet() on bean with name '(inner bean)#49a64d82'
[TRACE] 2020-03-14 16:54:58.635 [main] DefaultListableBeanFactory - Finished creating instance of bean '(inner bean)#49a64d82'
[TRACE] 2020-03-14 16:54:58.636 [main] DefaultListableBeanFactory - Returning cached instance of singleton bean 'gemfireCache'
[TRACE] 2020-03-14 16:55:03.415 [main] ClassPathLoader - getResource(gemfire.properties)
[TRACE] 2020-03-14 16:55:03.418 [main] ClassPathLoader - getResource trying: sun.misc.Launcher$AppClassLoader@73d16e93
[TRACE] 2020-03-14 16:55:03.418 [main] ClassPathLoader - getResource trying: java.net.URLClassLoader@1500e009
[TRACE] 2020-03-14 16:55:03.418 [main] ClassPathLoader - getResource(gfsecurity.properties)
[TRACE] 2020-03-14 16:55:03.419 [main] ClassPathLoader - getResource trying: sun.misc.Launcher$AppClassLoader@73d16e93
[TRACE] 2020-03-14 16:55:03.419 [main] ClassPathLoader - getResource trying: java.net.URLClassLoader@1500e009
[TRACE] 2020-03-14 16:55:03.429 [main] ClassPathLoader - forName(org.apache.logging.log4j.core.impl.Log4jContextFactory)
[TRACE] 2020-03-14 16:55:03.429 [main] ClassPathLoader - forName trying: sun.misc.Launcher$AppClassLoader@73d16e93
[TRACE] 2020-03-14 16:55:03.429 [main] ClassPathLoader - forName found by: sun.misc.Launcher$AppClassLoader@73d16e93 2020-03-14 16:55:03,432 main INFO Log4j Core is available and using Log4jProvider
[TRACE] 2020-03-14 16:55:03.434 [main] ClassPathLoader - forName(org.apache.geode.internal.logging.log4j.Log4jAgent)
[TRACE] 2020-03-14 16:55:03.434 [main] ClassPathLoader - forName trying: sun.misc.Launcher$AppClassLoader@73d16e93
[TRACE] 2020-03-14 16:55:03.435 [main] ClassPathLoader - forName found by: sun.misc.Launcher$AppClassLoader@73d16e93 020-03-14 16:55:03,436 main INFO Using org.apache.geode.internal.logging.log4j.Log4jAgent by default for service org.apache.geode.internal.logging.ProviderAgent
[TRACE] 2020-03-14 16:55:03.848 [main] ThreadContext - get() - in thread [main]
[DEBUG] 2020-03-14 16:55:03.854 [main] geode - LogWriter is created.
[DEBUG] 2020-03-14 16:55:03.854 [main] security - SecurityLogWriter is created.
[TRACE] 2020-03-14 16:55:03.858 [main] ClassPathLoader - getResource(org/apache/geode/internal/GemFireVersion.properties)
[TRACE] 2020-03-14 16:55:03.858 [main] ClassPathLoader - getResource trying: sun.misc.Launcher$AppClassLoader@73d16e93
[TRACE] 2020-03-14 16:55:03.858 [main] ClassPathLoader - getResource found by: sun.misc.Launcher$AppClassLoader@73d16e93
我的简单gemfire应用程序
@SpringBootApplication
@ClientCacheApplication(locators = {@ClientCacheApplication.Locator(host = "192.167.0.5", port = 10311) }, socketBufferSize = 90000, subscriptionEnabled = true)
@EnableEntityDefinedRegions(basePackageClasses = Person.class, clientRegionShortcut = ClientRegionShortcut.CACHING_PROXY)
@EnableGemfireRepositories(basePackageClasses = PersonRepository.class)
public class Application {
[在某些情况下,可能仅仅是您遇到DNS查找问题-尤其是因为您的房屋与其他位置的性能似乎有所不同。
您可以尝试以下方法:
使用hostname
命令获取您的主机名。将此作为别名添加到/etc/hosts
的127.0.0.1
文件中。例如,如果您的主机名看起来像foobar.local
,则应将/etc/hosts
调整为包括以下内容:
127.0.0.1 localhost foobar foobar.local
注意,我同时添加了FQDN(包括.local
返回的hostname
)以及较短的版本。
嗯,这是一个已加载的问题。
[在客户端(缓存)连接到群集(或服务器)之前和之后,都有很多事情发生。由于您的描述在这种情况下不够描述,因此会想到许多问题。
您提到您正在连接到服务器,这意味着您的Spring Boot,Pivotal GemFire(SDG)应用程序的Spring数据是客户端,尤其是ClientCache
?如果是这样,您要通过哪种网络(本地主机,专用内部网络,VPN,云网络等)?
是否涉及防火墙,代理,NAT(例如路由器,交换机)或其他网络设备?如果您注意到延迟,则很可能出现网络问题。
您如何配置客户端和服务器之间的池?例如,您要连接到1个或多个定位器,还是单个定位器。您是直接连接到服务器吗?
您的集群多大?是否有超过1台服务器?您是否启用了单跳?
您正在执行哪种数据访问操作?结果集有多大(即有多少个对象)?这些物体有多大?
您正在使用哪种形式的序列化(例如,您是否在应用程序域模型类型中实现java.io.Serializable
?是否正在使用PDX?是否正在使用GemFire Delta和DataSerialization?
您是否尝试过在不同的上下文中运行相同的应用程序?
您是否可以在某个地方(例如在GitHub中)公开访问您的应用程序?
您是否可以共享配置,客户端和服务器的完整日志文件,客户端和服务器的线程转储,等等?] >>
您正在从应用程序访问数据的区域是PARTITION区域吗?是否启用了持久性?如果是多节点(服务器)集群,是否所有成员都托管PR?
等,等等,等等...
您共享的一小段日志内容...
2020-Mar-13 09:00:42 | TRACE | internal.ClassPathLoader | getResource(gemfire.properties) 2020-Mar-13 09:00:42 | TRACE | internal.ClassPathLoader | getResource trying: sun.misc.Launcher$AppClassLoader@73d16e93 2020-Mar-13 09:00:42 | TRACE | internal.ClassPathLoader | getResource trying: java.net.Launcher$AppClassLoader@73d16e93
似乎表明它正在尝试解析
gemfire.properties
文件。您是否配置了gemfire.properties
?如果是这样,最好定义一个Spring Bootapplication.properties
资源并改用相应的等效spring.data.gemfire.*
属性。
如果您的文件系统状况良好?
ClassPathLoader
类是Pivotal GemFire内部类,所以无论发生什么事情,都在Spring(Data GemFire)的控制范围之外,并且完全与GemFire本身有关。
[您还应该注意,仅因为创建了GemFireCache
(例如ClientCache
)实例,并不一定意味着高速缓存或GemFire系统已经完全初始化。在创建了某些GemFire对象(例如缓存,然后是Regions,然后是索引和磁盘存储等)之后,后台发生了许多异步任务(例如,创建池最小大小)。
[此外,创建的缓存(例如ClientCache
)实例只是一个容器,用于容纳所有其他GemFire对象,例如Regions,它们实际上保存数据。必须先创建和初始化区域,然后才能进行任何数据访问操作。但是,要创建区域,您需要一个缓存(即首先是ClientCache
实例)。
您的客户区域是什么类型(例如ClientRegionShortcut.PROXY
或ClientRegionShortcut.CACHING_PROXY
)?
您的详细信息中有太多空白,无法为您提供更准确的答案。