我目前正在分布式 Web 服务器环境中使用 appfabric,其中 appfabric 用作分布式缓存机制。
我已经将 appfabric 设置为在 4 个带有 .net Web 应用程序的 Web 服务器上运行 - appfabric 是它的缓存机制。它最近在这些服务器上上线,但遇到了问题。我发现,对于每个盒子上的站点 iis 工作进程,内存在短时间内从 200K 不断增加到超过 1000K,直到它被回收。我根据集群中缓存的项目启用了本地缓存超时 1 小时。启用了高可用性,带有 3 个主要主机的 xml 集群配置设置。
为了解决这个问题,短期内是将缓存时间减少到 5 分钟并禁用本地缓存。这导致工作进程内存没有达到与以前相同的水平,但随着时间的推移仍略有增加。平均缓存大约 10,000 个项目,对象的大小从字符串到 dto 对象不等。
我有一些关于 appfabric 的问题需要帮助:
本地缓存反序列化对象是否存储在工作进程内存中?或者本地缓存存储在什么内存中?
我在某处读过但不明白,当一个项目从缓存中删除时,密钥会在缓存中保留一段时间。那是对的吗?
集群中的其中一台服务器是虚拟服务器,在此也看到了相同的行为。我应该查看与虚拟服务器 appfabric 设置相关的任何内容吗?目前它与其他缓存主机设置相同但不是引导主机?
我担心这个问题可能与缓存中对象的大小有关,这可能吗?是缓存中项目的大小还是它们的数量妨碍了appfabric缓存性能?
在我调整我的应用程序和设置以从中获得最佳性能时,我将不胜感激任何帮助我的帮助。