问题标签 [appfabric-cache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wcf - 从多个客户端访问 App Fabric Cache
我正在尝试在多个主机上设置一个网站,这些应用程序使用 App Fabric Caching 框架。
我已经在Machine1上使用 SQL Server(不是 XML)设置了 App Fabric,并且我使用“NT Authority\Network Service”用户来配置 App Fabric。我已经在同一台机器上设置了网站,并将“网络服务”设置为应用程序池标识。我已使用“grant-CacheAllowedClientAccount”命令将缓存存储权限授予“网络服务”用户。该网站正常运行,并且能够将数据添加/编辑/删除到缓存中。一切顺利。
但是,当我尝试使用完全相同的 IIS 和应用程序池设置在另一台机器 ( Machine2 ) 上托管相同的应用程序时,应用程序失败并出现以下错误:
有一个暂时的故障。请稍后重试。(指定的一个或多个缓存服务器不可用,可能是由于网络或服务器繁忙。对于本地缓存集群,还要验证以下条件。确保已为此客户端帐户授予安全权限,并检查 AppFabric所有缓存主机上的缓存服务都允许通过防火墙,而且服务器端的 MaxBufferSize 必须大于或等于客户端发送的序列化对象大小。)
如果我向所有人授予权限,它可以正常工作,但这不是一个很好的解决方案。
两台机器都驻留在域中。
您能否就此提供一些意见?
.net - AppFabric Cache 是否会在检索缓存项目时更新它们的到期时间?
当一个项目被放入缓存时,它会分配一个超时时间(通过对 Put() 的调用显式,或者从缓存配置中隐含)。我想更新/重置我检索到的每个项目的到期时间 [call Get() on]。
我是否需要明确放置/更新项目或到期时间会自动更新为现在 + 超时?
==更新==
看起来意图是应该调用ResetObjectTimeout() 方法。我在文档中没有看到其他关于过期更新逻辑的提及。
==更新 2==
在快速测试/实验中,ResetObjectTimeout() 生成的网络流量与使用 Put() 一样多,因此似乎整个条目都通过网络传输只是为了更新超时。我尝试了每个项目不同数量的数据,尽管事实上我没有添加任何新项目,但流量水平确实随着数据量的增加而上升。
我想更新超时的原因是我希望缓存项在上次使用后在缓存中保留 N 分钟。我预计这将是一种非常常见的使用模式,并且要实现它,我需要在每次获取操作时通过网络重新发送所有数据,这大大降低了使用缓存的好处,例如限制可伸缩性和性能。
c#-4.0 - App Fabric:虽然 GET 错过了 Enum 属性
我有一个标记为CollectionDataContract
具有枚举成员的类。当我在 Appfabric 中放置此类的对象时,我就完成了。当我从 App 结构中取回它时,它不会反序列化枚举成员。但我不确定序列化部分本身是否遗漏了枚举。
请帮忙。
如果您需要更多信息,请告诉我。
谢谢。
LogicalOperator
枚举在哪里
c# - 如何以编程方式识别 Windows AppFabric 服务是否正在运行?
有谁知道如何检查 Windows Server AppFabric 缓存服务是否已启动并以编程方式运行?
如果 AppFabric 服务关闭,它将引发异常。这是一个非常昂贵的过程,因此在从 AppFabric 创建缓存对象之前,我需要检查服务是否已启动并运行。
这意味着我只想在 AppFabric 正在运行时将 AppFabric 用作缓存服务,否则我想使用System.Web
缓存。
例子:
appfabric - 基于 Windows Server AppFabric 缓存超时的失效回调
我在启用本地缓存的应用程序中使用 Windows Server AppFabric 缓存。这配置如下:
我设置了基于超时的失效,超时间隔为 120 秒。根据此配置,本地缓存将在每 120 秒后从内存缓存中删除项目,并从缓存集群中检索项目。是否可以添加一个回调,每当本地缓存尝试命中缓存集群以检索项目而不是在本地获取它们时,该回调就会被触发?
.net - AppFabric Cache GetAndLock(forceLock = true) 方法签名的预期使用模式是什么?
该文档指出:
如果 forceLock 为真,则无论缓存中是否存在键值对,都会锁定键。
没有进一步的解释,例如,对不在缓存中的键进行锁定意味着什么,以及在锁定中插入缓存项的预期技术是(或现在是)什么。
.net - 从 .net 项目定义 AppFabric 缓存客户端程序集引用的正确方法?
所需的 AppFabric 缓存客户端代码引用了作为客户端安装一部分的这两个程序集:
在 Visual Studio 2010 中定义这些引用将导致程序集在构建时被复制到项目 bin 文件夹中,然后与我们的二进制文件一起重新分发。但是,AppFabric 缓存 EULA 没有明确提及再分发权利,因此这些文件在法律上是不可再分发的。我不确定这是否有意,但是我们的客户最好在安装时为自己获取和安装 AppFabric 缓存,而不是使用可能已过时和/或与 AppFabric 缓存不兼容的重新分发的程序集集群(例如,如果它使用不同的版本)。
但是,AppFabric 缓存安装程序不会将打包的程序集放入 GAC,因此客户端/客户需要这样做以允许我们的代码能够引用它们 - 程序集无法在适当位置引用(在 \Program Files\ AppFabric 1.1 for Windows Server),除非我们明确引用并从特定路径加载程序集,这是不寻常的。
那么我的问题是 - 引用这些程序集的预期使用模式是什么?它们实际上应该是可再分发的,还是我们的客户应该将它们放在 GAC 中,还是有其他选择?
asp.net - ASP.Net 会话状态的 AppFabric 缓存提供程序是否允许后备存储?
如果缓存集群节点存在 RAM 压力,或者集群未处于高可用性模式并且节点丢失(例如失败或重新启动),AppFabric 缓存可能会丢失会话状态。
通常,在这些情况下将使用后备存储以允许在缓存未命中的情况下重新创建缓存条目(毕竟它是缓存)。AppFabric Cache ASP.NET 会话状态提供程序是否允许后备存储,例如通过在传统会话状态提供程序之一之上形成一个层?(例如 ASP.NET 状态服务或基于 SQL Server 的提供程序)。
笔记。
配置文档中没有提到这样的事情:
c# - Appfabric 缓存未刷新 - sharedId 的使用
我有一个网络场,其中包含 4 个托管 Web 应用程序 (x) 的 Web 服务器,它由网络负载平衡器控制,用于我用作App fabric cache
会话提供者的分布式会话维护。
我只使用一个创建了区域的缓存服务器。
我的配置包含区域名称和共享应用程序 ID,这在整个场中托管的所有 Web 应用程序 (x) 中都是相同的。
但是我看看我是否使用 IP 访问网络应用程序所有会话都不同
在这种情况下 sharedId 有什么用?我的目的是维护一个会话,尽管我的应用程序托管在多个服务器中以提高性能。
主要问题是我的缓存行为不正常,有时会话值在更改后 1-2 分钟都没有更新
我的 web.config 设置
asp.net - appfabric 缓存失败异常=getandlock 会话状态请求
我在一个带有 3 个主机 appfabric 集群的 asp.net 应用程序中使用会话提供程序。集群是版本 3,在 windows server 2008 上运行。我的会话集群的辅助节点设置为 1,最小辅助节点设置为 0。
当我查看缓存统计信息时,我注意到未命中计数类别中有一个非常大的(不成比例的)数字。事实上,它几乎等于请求计数类别。因此,我决定查看性能计数器,以找出会话提供程序似乎无法正确保存对象或为什么它一直丢失的原因。
我发现 getandlocks/sec 与失败异常/秒计数器相同。它也一直在运行,考虑到我们的员工产生的流量只有这么多,这是不正常的。对象数量并不大,但拒绝率显然远高于应该从中出来的对象数量。我没有在会话中写入或修改那么多信息,在大多数情况下它不会改变,但显然我收到的请求数量远远超过我的用户可以创建的数量。
欢迎任何帮助。
PS。理想情况下,我很想知道这些失败异常的含义,但似乎无法捕获它们。