当我重新安装AppFabric 1.1时,为什么我收到此错误"AppFabric安装失败,因为安装程序MSI返回错误代码:1603".
我确实用管理权限运行它.
以下是错误日志.
2012-06-26 18:20:07, Information Setup ===== Logging started: 2012-06-26 18:20:07+08:00 =====
2012-06-26 18:20:07, Information Setup File: c:\a0ddcd54d09ca070ef\setup.exe
2012-06-26 18:20:07, Information Setup InternalName: Setup.exe
2012-06-26 18:20:07, Information Setup OriginalFilename: Setup.exe
2012-06-26 18:20:07, Information Setup FileVersion: 1.1.2106.32
2012-06-26 18:20:07, Information Setup FileDescription: Setup.exe
2012-06-26 18:20:07, Information Setup Product: Microsoft(R) Windows(R) Server AppFabric
2012-06-26 18:20:07, Information Setup ProductVersion: 1.1.2106.32
2012-06-26 18:20:07, Information Setup Debug: False
2012-06-26 18:20:07, Information Setup Patched: False
2012-06-26 18:20:07, Information Setup PreRelease: …Run Code Online (Sandbox Code Playgroud) 好吧,我已经成功部署了AppFabric,一切都很顺利,直到我们开始在网站上出现间歇性异常:
ErrorCode <ERRCA0017>:SubStatus <ES0007>:存在临时故障.请稍后重试.(请求失败,因为服务器处于限制状态.)
起初我怀疑服务器内存不足(节流状态),但我最终得出结论,这不是问题.在事件日志中,我发现DistributedCacheService.exe偶尔会崩溃,这导致我在本地开发环境中重新生成错误的简单方法:
如果我Get-CacheClusterHealth在重新启动服务之前做了一件事,它看起来像这样:
NamedCache = MyCacheName
Healthy = 100,00
UnderReconfiguration = 0,00
NotPrimary = 0,00
NoWriteQuorum = 0,00
Throttled = 0,00
Run Code Online (Sandbox Code Playgroud)
重启后:
Unallocated named cache fractions
---------------------------------
NamedCache = MyCacheName
Unallocated fraction = 100,00
Run Code Online (Sandbox Code Playgroud)
当我得到结果时Get-CacheClusterHealth,网站失败了.据我所知,它会在一段时间后(10多分钟)纠正自己.
有没有办法让AppFabric更快地恢复原状?
微软发布了Windows Server AppFabric测试版,"可以更轻松地构建,扩展和管理在IIS上运行的Web和复合应用程序".
MS还表示,您可以在自己的服务器,第三方主机和Windows Azure上部署AppFabric.
到目前为止,我们还没有进行任何Azure开发,主要是因为API与ASP.NET不同,您只能将应用程序部署到云(而不是在您自己的服务器上).
因此,如果我使用AppFabric API,是否可以创建我可以在内部,第三方托管服务商或云端使用相同API部署的应用程序?在所有这些中,它会成为"一等公民"吗?
这离开了Azure API - AppFabric是替代品吗?那么Azure SQL呢?
我一直在关注微软最近将Velocity推广为分布式缓存解决方案,该解决方案将与Memcached等竞争对手竞争.
我一直在寻找一个64位版本的Memcached for Windows一段时间没有运气,因为我正在研究的ASP.Net MVC项目的一切都是64位,除了64位之外什么都没用.
现在我们已经在测试中使用ASP.NET MVC进行了对冲(很快就希望RTM),但是StackOverflow似乎并没有做得太糟糕,所以我在那里的担忧有限.但速度仍然是一个未知的数量,并且仍将是Beta(或CTP)多年 - 但它确实有 64位!
在这种情况下,有没有人有相关的经验或观点?我们应该等待Velocity的时间 - 它是否足以与Memcached这样的巨头竞争,或者我们是否应该投入时间试图获得64位版本的Memcached?
我正在寻找最安全的方式来安排appFabric缓存调用的datacache和datacache工厂的使用,每页加载400到700个缓存(几乎没有任何放置).似乎使用单个静态DataCacheFactory(或者可能是循环设置中的一对)是要走的路.
我是否为每个DataCache对象请求调用GetCache("cacheName"),还是在初始化DataCache工厂时将其设置为静态并将其用于所有调用?
我是否必须处理异常,检查失败代码并尝试重试?
当多个线程尝试使用缓存存储并且想要相同的项目(按键)时,是否必须考虑争用?
是否有某种文档正确地探讨了它的设计和用法?
我到目前为止从论坛收集的一些信息:
http://social.msdn.microsoft.com/Forums/en-AU/velocity/thread/98d4f00d-3a1b-4d7c-88ba-384d3d5da915
"创建工厂涉及到连接到集群并且可能需要一些时间.但是一旦你拥有了工厂对象和你想要使用的缓存,你可以简单地重用这些对象来执行put并进入缓存,你应该看到更快的表现."
http://social.msdn.microsoft.com/Forums/en-US/velocity/thread/0c1d7ce2-4c1b-4c63-b525-5d8f98bb8a49
"创建单个DataCacheFactory(singleton)比创建多个DataCacheFactory更有效.你不应该为每个调用创建DataCacheFactory,它会有性能损失."
"请尝试在您的单例中封装循环算法(具有3/4/5工厂实例)并比较负载测试结果."
http://blogs.msdn.com/b/velocity/archive/2009/04/15/pushing-client-performance.aspx
"您可以增加客户端数量以增加缓存吞吐量.但有时如果您希望拥有较小的客户端集并增加吞吐量,则需要使用多个DataCacheFactory实例.DataCacheFactory实例创建与服务器的连接(例如, .g如果有3个服务器,它将创建3个连接)并将来自数据缓存的所有请求多路复用到这些连接上.因此,如果put/get卷非常高,这些TCP连接可能会出现瓶颈.所以一种方法是创建多个DataCacheFactory实例,然后对它们使用操作."
这里到目前为止使用了什么...调用属性,如果返回值不为null,则执行操作.
private static DataCache Cache
{
get
{
if (_cacheFactory == null)
{
lock (Sync)
{
if (_cacheFactory == null)
{
try
{
_cacheFactory = new DataCacheFactory();
}
catch (DataCacheException ex)
{
if (_logger != null)
{
_logger.LogError(ex.Message, ex);
}
}
}
}
}
DataCache cache = null;
if (_cacheFactory != null)
{
cache = _cacheFactory.GetCache(_cacheName);
}
return cache;
}
}
Run Code Online (Sandbox Code Playgroud)
在Microsoft AppFabric论坛上查看此问题:http://social.msdn.microsoft.com/Forums/en-AU/velocity/thread/e0a0c6fb-df4e-499f-a023-ba16afb6614f
有没有人对AppFabric和NCache或AppFabric和ScaleOut进行彻底的比较?我们目前正在寻求在地理位置较远的位置实施AppFabric,NCache或ScaleOut以进行分布式缓存,我想知道谁并排比较它们的想法.我很欣赏很多人使用其中一个并告诉我为什么他们选择的解决方案很棒,但我真的在寻找两种产品的比较.诸如AppFabric不做或不做的事情(如果有的话),部分地从特征的角度来看,但也从开发者的角度来看.正在使用一个更好,更容易,更灵活,更强大等等.
有很多我可以比较的功能列表,但我真的希望与那些可能与我们处于类似位置的人进行比较,并且已经进行了我们即将推出的评估,这将给我们一些思考的东西我们这样做.
提前致谢.
我目前正在研究将AppFabirc缓存集成到我的.net c#应用程序中,并寻找一些代码示例.有没有可用的AppFabric缓存可用的开源或代码示例我可以看一下?
查看Azure ACS生成的请求URL时,我可以看到ACS包含电子邮件,全名,名字和姓氏作为所需声明.此外,fullname属性映射到http://axschema.org/namePerson声明类型.
现在我已将MyOpenID添加为身份提供者.MyOpenID无法识别axschema声明,但我已成功http://schema.openid.net/namePerson从MyOpenID中检索到.
但问题是,即使我将http://schema.openid.net/namePerson声明作为与ACS中的MyOpenID声明发布者相关的规则添加,声明也不会包含在ACS生成的请求URL中.
是否有任何(隐藏)方法来配置要求此声明的请求?或者甚至更好,更改内置映射以使用schema.openid.net/namePerson类型而不是axschema.org/namePerson?
更新:我现在已经正确实现了这一点.有关更多信息,请参阅我的博客文章.
我正在尝试使用AppFabric和NHibernate作为我的二级缓存提供程序,但是我收到以下错误:ErrorCode:Initialization:无法联系缓存服务.有可能的原因,请联系管理员并参阅产品帮助文档.
我认为问题出在我在web.config中的配置:
<section name="dcacheClient"
type="Microsoft.ApplicationServer.Caching.DataCacheClientSection, Microsoft.ApplicationServer.Caching.Core"
allowLocation="true"
allowDefinition="Everywhere"/>
...
<dcacheClient deployment="routing" localCache="False">
<localCache isEnabled="false" sync="TimeoutBased" ttlValue="300" />
<hosts>
<host name="localhost" cachePort="22233" cacheHostName="AppFabricCachingService" />
</hosts>
</dcacheClient>
Run Code Online (Sandbox Code Playgroud)
我已经下载了NHibernate.Caches源代码,试图找出问题所在,并在调用GetCache方法时在VelocityClient构造函数中抛出异常:
public VelocityClient(string regionName, IDictionary<string, string> properties)
{
region = regionName.GetHashCode().ToString(); //because the region name length is limited
var cacheCluster = new CacheFactory();
cache = cacheCluster.GetCache(CacheName);
try
{
cache.CreateRegion(region, true);
}
catch (CacheException) {}
}
Run Code Online (Sandbox Code Playgroud)
如果我将一个监视添加到cacheCluster变量,我可以找到一个_servers私有变量,它有一个System.Data.Caching.EndpointID,其MyURI属性设置为net.tcp:// localhost:22234/AppFabricCachingServive,我认为它已经来了来自web.config中的配置.
如果您不知道问题的确切原因,但对如何解决此问题有一些想法,那也将非常感激.
附加信息
我从命令中得到以下结果Get-CacheHostConfig -HostName tn-staylor-02 -CachePort 22233:
HostName : tn-staylor-02
ClusterPort …Run Code Online (Sandbox Code Playgroud) 我们已经为我们的Web应用程序实现了AppFabric Windows Server Cache.最初,我们能够毫无问题地使用缓存.然后我们将流量增加了大约100倍,并开始出现间歇性异常.例外情况大约每2天发生一次,大约每分钟发生一次.
我们的配置:
错误按顺序发生(在1分钟内,九个Web服务器中的每一个都会发生异常):
System.Net.Sockets.SocketException:远程主机Microsoft.ApplicationServer.Caching.DataCacheException强制关闭现有连接: ErrorCode<ERRCA0016>:SubStatus<ES0001>:The connection was terminated, possibly due to server or network problems or serialized Object size is greater than MaxBufferSize on server. Result of the request is unknown. ---> System.ServiceModel.CommunicationException: The socket connection was aborted. This could be caused by an error processing your message or a receive timeout being exceeded by the remote host, or …