我在一台计算机上进行了AppFabric 1.1 x64(主机+缓存)的测试安装(域名注册,Windows 7企业版)。 安装和配置完美无缺(集群只有一台机器,配置存储在SQL中),我在本地运行所有东西(包括SQL Server 2008 R2)。 当我想启动“AppFabric缓存服务”时出现问题 - 它在几秒钟后崩溃,并且以下条目出现在管理事件中(在事件查看器中):

Faulting application name: DistributedCacheService.exe, version: 1.0.4632.0, time stamp: 0x4eafeccf
Faulting module name: KERNELBASE.dll, version: 6.1.7601.17651, time stamp: 0x4e21213c
Exception code: 0xe0434352
Fault offset: 0x000000000000cacd
Faulting process id: 0x1928
Faulting application start time: 0x01ccb8c5266c0fd5
Faulting application path: C:\Program Files\AppFabric 1.1 for Windows Server\DistributedCacheService.exe
Faulting module path: C:\Windows\system32\KERNELBASE.dll
Report Id: 6457890a-24b8-11e1-b051-70f1a19c8456

Application: DistributedCacheService.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.UriFormatException
Stack:
   at Microsoft.ApplicationServer.Caching.VelocityWindowsService.StartServiceCallback(System.Object)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

AppFabric Caching service crashed with exception {System.UriFormatException: Invalid URI: The hostname could not be parsed.
   at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
   at Microsoft.ApplicationServer.Caching.ServiceConfigurationManager.InitializeThisHostData()
   at Microsoft.ApplicationServer.Caching.ServiceConfigurationManager.InitializeDataFromGlobalConfig()
   at Microsoft.ApplicationServer.Caching.VelocityWindowsService.StartService(Boolean deleteTKT)
   at Microsoft.ApplicationServer.Caching.VelocityWindowsService.StartServiceCallback(Object context)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()}. Check debug log for more information

这是基本PowerShell命令的输出:

GET-CacheHost

HostName : CachePort Service Name            Service Status Version Info
-------------------- ------------            -------------- ------------
MW7GM0B50ROMDQ:22233 AppFabricCachingService DOWN           3 [3,3][1,3]

GET-CacheHostConfig

cmdlet Get-CacheHostConfig at command pipeline position 1
Supply values for the following parameters:
HostName: MW7GM0B50ROMDQ
CachePort: 22233

HostName        : MW7GM0B50ROMDQ
ClusterPort     : 22234
CachePort       : 22233
ArbitrationPort : 22235
ReplicationPort : 22236
Size            : 3994 MB
ServiceName     : AppFabricCachingService
HighWatermark   : 99%
LowWatermark    : 90%
IsLeadHost      : True

缓存服务设置为作为网络服务运行。

你有什么可能是错的线索吗? 我见过“无效的URI:无法解析主机名。” 消息,但配置中的名称似乎完全没问题(即使它看起来很奇怪,它是我的计算机的正确名称)。 任何帮助,将不胜感激。

PS我以前有AppFabric 1.0,它似乎工作正常。 我在安装AppFabric 1.1之前已经卸载了它。

===============>>#1 票数:4 已采纳

我设法找出原因是什么。

在我的Windows主机文件中,我有几个环回IP条目:localhost,{machine name}和{machine name FQDN}。 当我删除除{机器名FQDN}之外的所有内容时,配置向导能够设置正确的配置。

这是简单的方法,但我后来才知道......

我解决此问题的第一种(也是更痛苦的)方法是手动删除缓存服务配置,并使用PowerShell cmdlet从头开始重新创建:

Import-Module ApplicationServer
Import-Module DistributedCacheAdministration
Import-Module DistributedCacheConfiguration
New-CacheCluster ...
Register-CacheHost ...
Add-CacheHost ...
Add-CacheAdmin ...
etc.

服务开始得很好,但遗憾的是,当我使用Get-CacheHost验证设置时,我收到:

HostName : CachePort                       Service Name            Service Status Version Info
--------------------                       ------------            -------------- ------------
MW7GM0B50ROMDQ.<domain part>:22233         AppFabricCachingService UP             0 [0,0][0,0]

如果您查看版本号,您会发现它很可能是不合适的。 不幸的是,当我尝试手动更新此信息时('Update-CacheHostAllowedVersions'),我看到奇怪的'访问被拒绝'错误:

Update-CacheHostAllowedVersions : ErrorCode<ERRCAdmin026>:SubStatus<ES0001>:Remote registry access failed on host MW7GM0B50ROMDQ.<domain part>. Check if the required permissions are available and the host is not down.

我必须做一些更多的测试,以确定它是真的是一个问题还是只是烦恼。

===============>>#2 票数:1

我遇到了类似/相同的问题,但修复HOST并没有帮助。 我的问题的核心是我的服务器有很长(8+字符)的名字。 配置缓存时,它已被修剪。

第一个有用的提示是名称不正确的Get-CacheHost输出。 然后解决方案很简单:

  1. Export-CacheClusterConfig -Path <path>\\config.xml
  2. 编辑文件并修复主机名
  3. Import-CacheClusterConfig -Path <path>\\config.xml
  4. Start-CacheCluster

  ask by Sebastian Gebski translate from so

未解决问题?本站智能推荐:

2回复

使用AppFabric缓存的性能问题

我发现,当AppFabric缓存承受重负载时,它将导致不可预测的应用程序行为。 有没有人经历过类似的经历? 对AppFabric的理想配置有任何想法吗?
1回复

AppFabric缓存服务器和Web应用程序在同一物理机器上

我正在考虑为我们的一个项目使用AppFabric缓存功能。 我们需要分布式缓存功能,似乎AppFabric是一个很好的解决方案。 但是,我有几个问题希望在这里得到解答。 我们正在考虑在安装Web应用程序的同一台机器上托管AppFabric Cache服务器。 我在MSDN文章中发现A
1回复

AppFabric缓存中的区域名称限制

我们使用Windows Server AppFabric缓存6.1 x64。 如果区域名称包含类似“!”的字符,则拥有Microsoft.ApplicationServer.Caching.DataCache的实例并尝试按键/区域获取对象会导致DataCacheException 。 要么
1回复

Powershell命令用于从Appfabric缓存中删除项目

是否有powershell命令: 获取缓存中的项目列表 删除特定项目 删除所有项目 更改特定键的值 我没有遇到一个很好的博客或教程,初学者可以开始使用Appfabric缓存管理。 谢谢!
1回复

设置AppFabric缓存可用的内存量

如何设置Windows Server AppFabric缓存服务可用的内存量? 我们在托管网站的同一台服务器上运行AppFabric Cache,我希望能够控制缓存消耗多少RAM。
2回复

是否可以调整AppFabric Cache服务器来存储更大的对象?

当我假设更大的对象图被添加到缓存时,我收到AppFabric缓存服务器的错误。 ErrorCode:SubStatus:连接已终止,可能是由于服务器或网络问题或序列化对象大小大于服务器上的MaxBufferSize。 请求的结果未知。 我确信它不是网络问题。 我能够在这个特定的对
1回复

缓存到AppFabric的代理EF对象,新部署后无法检索对象

我们的应用程序正在缓存Entity Framework对象,以便我们的负载平衡站点可以共享缓存的项目,而不是服务器A和B可能显示不同内容的服务器(使用内存中缓存)。 但是,完成部署后,我们无法从缓存中检索对象。 引发以下错误: 反序列化程序无法加载要反序列化的类型,因为在程序集'E
1回复

通过AppFabric缓存,您可以在启用本地缓存的情况下使用并发方法吗?

我试图找出是否有可能同时使用悲观并发模型和本地缓存。 当启用了本地缓存后,并使用诸如GetAndLock和PutAndUnlock之类的悲观并发方法,锁定/获取/放置在哪里进行? 在缓存群集上还是在本地缓存中? 并且,如果发生在群集上,它会自动将更改与本地缓存同步吗?
1回复

在AppFabric中使用锁定的正确方法是什么

我有一项服务,可以每四个小时更新8000个对象的AppFabric缓存。 它读取一个表,从每个记录创建一个对象,并将其存储在缓存中。 在更新缓存时,当时一个对象仍然可以从缓存中请求对象。 关于此的信息不多,所以我想知道以下代码是否是在应用程序中锁定和存储缓存对象的正确方法,而其他线程可
1回复

AppFabric与System.Runtime.Caching

TLDR版本:用于缓存许多在我的.NET4 WCF服务中很少更改的小型数据库表。 哪种技术最易于实施,最易于维护,最佳执行以及为什么? 长版:我开始为新项目制定缓存策略。 它过去很简单,因为预先打包的选项较少(企业库为初学者),但现在.NET 4框架和AppFabric可用,我很难决定