首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在我的应用程序中连接到GemFire服务器需要很长时间。

在我的应用程序中连接到GemFire服务器需要很长时间。
EN

Stack Overflow用户
提问于 2020-03-13 07:10:28
回答 2查看 321关注 0票数 0

我正在我的工作场所的项目中设置spring-data-gemfire。但是,连接到GemFire服务器并从我的应用程序中检索数据需要很长时间。

代码语言:javascript
复制
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的实例”需要超过40秒的时间吗?到"getResource..“?

当前版本

2.2.1.RELEASE

  • Spring 2.2.1.RELEASE

  • 3服务器和2定位器(安装在虚拟Machine)

  • Private本地Network

  • Using Java Serialization

  • Using缓存代理上,用于我的客户端

)

当我在家里尝试一个简单的gemfire应用程序时,大约花了5秒。

代码语言:javascript
复制
[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应用程序

代码语言:javascript
复制
@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 {
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-16 17:23:02

在某些情况下,可能只是您有DNS查找问题-特别是因为您的家庭和其他位置之间的性能似乎不同。

你可以试试这个:

使用hostname命令获取主机名。将其作为别名添加到用于/etc/hosts127.0.0.1文件中。例如,如果您的主机名看起来类似于foobar.local,那么您的/etc/hosts应该进行调整以包括以下内容:

代码语言:javascript
复制
127.0.0.1   localhost  foobar foobar.local

请注意,我添加了FQDN (包括hostname返回的hostname)和较短的版本。

票数 0
EN

Stack Overflow用户

发布于 2020-03-13 20:48:50

好吧,这是个充满负担的问题。

在客户端(缓存)连接到集群(或服务器)之前和之后都会发生许多事情。考虑到许多问题,因为在这种情况下,您的描述并不是描述性的。

您提到的

  1. 您正在连接到服务器,因此这意味着您的Spring应用程序是一个客户机,特别是一个ClientCache?如果是的话,您正在访问哪类网络(本地主机、专用内部网络、VPN、云网络等)?
  2. 是否有防火墙、代理、NAT (例如路由器、交换机)或其他网络设备?如果您注意到延迟,那么很有可能出现网络问题。
  3. 您是如何在客户机和服务器之间配置池的?例如,您是连接到一个或多个定位器,还是连接单个定位器。您是否直接连接到服务器?
  4. 您的集群有多大?有一个以上的服务器吗?您启用单跳操作吗?
  5. ,您正在执行什么样的数据访问操作?结果集有多大(即有多少个对象)?您正在使用的objects?
  6. What序列化形式有多大(例如,您是否是应用程序域模型类型实现java.io.Serializable?你是偶然使用PDX的吗?您使用的是DataSerialization?
  7. Have和GemFire Deltas吗?您尝试在不同的上下文中运行相同的应用程序吗?
  8. 您的应用程序可以在某个地方公开访问,例如在GitHub中吗?
  9. 您可以共享您的配置、客户机和服务器的完整日志文件、客户机和服务器的线程转储等吗?
  10. 是您从应用程序访问数据的分区区域吗?是否启用持久性?如果一个多节点(服务器)集群,是否所有的成员都承载了PR up?
  11. 等等等.

你分享的日志内容片段..。

代码语言:javascript
复制
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 application.properties资源,并使用相应的、等价的spring.data.gemfire.*属性。

如果您的文件系统运行良好呢?

ClassPathLoader类是一个关键的GemFire内部类,因此无论发生什么,都不受Spring (Data GemFire)的控制,完全与GemFire本身有关。

您还应该注意,仅仅因为已经创建了GemFireCache (例如ClientCache)实例,这并不一定意味着缓存或一般的GemFire系统已经完全初始化。在创建特定的GemFire对象(例如缓存、然后是区域、索引和DiskStores等)之后,背景中会发生许多异步任务(例如池min大小创建)。

另外,创建的缓存(例如ClientCache)实例只是一个容器,用于保存所有其他GemFire对象,例如区域,这些对象实际上保存数据。在进行任何数据访问操作之前,必须创建和初始化区域。但是,为了创建区域,您需要一个缓存(即首先是一个ClientCache实例)。

您的客户区域是什么类型(例如ClientRegionShortcut.PROXYClientRegionShortcut.CACHING_PROXY)?

你的细节中有太多的空白,无法给你一个更精确的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60666266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档