AppFabric 1.1缓存(崩溃的Windows服务)

时间:2011-12-12 13:07:48

标签: .net caching appfabric

我在一台计算机(域名注册,Windows 7企业版)上安装了AppFabric 1.1 x64(托管+缓存)。安装和配置完美无缺(集群只有一台机器,配置存储在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命令的输出:

获取-CacheHost

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

获取-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:无法解析主机名。”消息,但配置中的名称似乎完全没问题(即使它看起来很奇怪,它也是我计算机的正确名称)。任何帮助将不胜感激。

P.S。之前我有AppFabric 1.0,它似乎工作正常。我在安装AppFabric 1.1之前已将其卸载。

2 个答案:

答案 0 :(得分:4)

我设法找出原因。

在我的Windows主机文件中,我有几个环回IP条目:localhost,{machine name}和{machine name FQDN}。当我删除{machine name 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.

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

答案 1 :(得分:1)

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

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

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