用户数据存储在两个相当大(> 1 PB)的OpenStack Swift存储集群中。 让他们成为A组和B组 。 另外,还有几个PoP需要与这些数据交互。 这些PoP中的服务器实际上是无盘的,这意味着没有用户数据存储在它们上面或者下载到它们。 PoP可以分为普通的世界地区 (如北美 , 南非 , 中欧等)。 有些PoP距离任何集群的Swift端点相当远,引入了不希望有的延迟。 为了稍微缓解这个问题,我想在每个区域设置一个caching网关服务器,这将caching到最近的集群的r / w请求。 目前,任何PoP中的客户端都通过永久安装的swift虚拟文件系统来访问用户数据,该虚拟文件系统是将Swift Object Storage作为块设备(或多或less)安装的FUSE模块。 然而,svfs在一开始和未来都不是那么稳定,客户端应该通过NFS访问caching服务器。 这是所需架构的一个分支的示意图: +——————+ +——————+ NFS +——————+ | Cluster A | SVFS | Region 1 Cache +———-> R1 PoP a Client | | +—————-> | | | |Persistent Storage| |Ephemeral Storage+—-+ |Generates R/W Load| +—————–++ […]
我遇到了最大的吞吐量问题,需要一些build议来调整我的旋钮。 我们正在运行一个10Gb的文件服务器进行备份分发。 这是LSI MegaRAID控制器上的两个磁盘S-ATA2设置。 服务器也有24G的内存。 我们需要以最大吞吐量镜像我们上次上传的备份。 我们“热”备份的RAID0给我们大约260 MB /秒的写入和275 MB /秒的读取。 一个大小为20GB的testingtmpfs给我们大约1GB /秒。 这种吞吐量是我们需要的。 现在,我怎样才能调整Linux的虚拟内存子系统,将最后上传的文件尽可能长时间地caching在内存中,而不需要将其写入磁盘(甚至更好:写入磁盘并将其保存在内存中)? 我设置了下面的sysctl,但是他们不给我们预期的吞吐量: # VM pressure fixes vm.swappiness = 20 vm.dirty_ratio = 70 vm.dirty_background_ratio = 30 vm.dirty_writeback_centisecs = 60000 这在理论上应该给我们16GB的cachingI / O,并等待几分钟,直到写入磁盘。 尽pipe如此,当我对服务器进行基准testing时,我发现写入没有影响,吞吐量并没有增加。 需要帮助或build议。
我们刚刚迁移到Amazon AWS。 我们目前有一个EC2实例运行良好。 它在前端运行Nginx,在后端运行Apache。 这也运行良好。 所有站点都正确启动,并包含由EC2提供的文件的caching控制头。 问题在于我们放置在Amazon S3中的所有静态文件都是通过CloudFront CDN访问的。 我们可以很好地访问这些文件(而CORS也没有问题),但显然CloudFront不提供具有Cache-Control头文件。 我们希望利用浏览器caching。 我看到它的方式,EC2实例在这里没有扮演一个angular色,因为静态文件是由S3 + CloudFront直接提供的,请求不会转到EC2中的Web服务器。 我完全迷失了。 问题:1)在这种情况下,如何设置Cache-Control? 2)是否可以设置caching控制? 从S3还是CloudFront? 注意:我已经在Google上打了几页,您可以在S3中为单个对象设置标题。 这实在不是一个有效的方法,因为在我的情况下,我们正在谈论几个对象。 谢谢!
我的办公室服务器有问题。 这是一个具有6GB RAM内存的虚拟化Windows 2008 R2服务器。 它只有微软的SQL Server(内存分配最大= 3GB),只是一个不超过1GB的RAM的软件。 但是,服务器的RAM内存几乎已经满了,看着任务pipe理器中的进程,他们似乎没有总结这一点。 我已经安装RamMap,但不能很容易地解释它,有没有什么“高价值”,你可以相同?
最近我一直在阅读有关SATA驱动器的写caching,NCQ,固件错误,障碍等问题,而且我不确定什么样的最佳设置可以让我的数据在发生电源故障的情况下安全。 据我所知,NCQ允许驱动器对写入进行重新sorting以优化性能,同时让内核知道哪些请求已经被物理写入。 写入caching使驱动器更快地提供请求,因为它不会等待将数据写入物理磁盘。 我不确定NCQ和写入caching如何在这里混合… 文件系统,特别是需要logging的文件系统,需要确定何时写下了一个特定的请求。 另外,用户空间进程使用fsync()强制刷新特定文件。 对fsync()的调用在文件系统确定数据写入磁盘之前不应该返回。 有一个function(FUA,强制单元访问),我只在SAS驱动器上看到过,它强制驱动器绕过caching并直接写入磁盘。 对于其他任何事情,都有写障碍,这是由内核提供的机制,可以触发驱动器上的caching刷新。 这迫使所有的caching被写下来,而不仅仅是关键数据,因此如果被滥用,则会减慢整个系统,例如使用fsync()。 那么存在固件缺陷的驱动器,或者故意在数据被物理写入时撒谎。 说了这个..有几种方法来设置驱动器/文件系统:A)NCQ和写caching禁用B)只是NCQ启用C)只写caching启用D)NCQ和写caching启用 我越来越障碍启用..顺便说一句,如何检查,如果他们实际上启用? 在断电的情况下,在积极写入磁盘的同时,我的猜测是选项B(NCQ,无caching)对于文件系统日志和数据都是安全的。 可能会有性能损失。 如果使用障碍或FUA,选项D(NCQ +高速caching)将对使用fsync()的文件系统日志和应用程序是安全的。 在caching中等待的数据是不好的,这取决于文件系统来检测它(校验),至less文件系统不会(希望)处于不稳定的状态。 在性能方面,应该会更好。 然而,我的问题是…我错过了什么? 还有其他的variables需要考虑吗? 有没有什么工具可以证实这一点,而我的驱动器的行为应该是他们应该的?
我们有一台运行SQL Server 2005 64位的强大的Windows 2008 x64服务器(4 x 4核心CPU,32GB RAM)。 我们有一个小的(6GB)但非常重要的数据库,访问起来有点慢,直到页面被caching到内存中(这个用法是非常随机的I / O,所以给定的页面在内存中的可能性非常低,最终用户抱怨最初的缓慢)。 磁盘速度够快(本地15K SAS),但我猜应用程序有点笨拙(这是一个COTS解决scheme),所以我想知道是否有一种方法来强制在SQL Server 2005中的内存中的数据库(2008年不支持由供应商,所以我们不应该升级到这一点),以帮助避免初始caching填充布鲁斯? 我目前的方法是,我从脚本中的每个表运行一个SELECT *来获取内存中的数据页,但是一些对象(索引,全文search等)没有被这个方法caching(并修改脚本来查询索引和编写适当的WHERE子句来caching是熬海复杂的)。
我处于一个包含许多配备了Adaptec和LSI MegaRAID硬件RAID控制器的Supermicro服务器的环境中。 这些控制器包含电池支持的caching模块,以帮助提高写入性能并保护数据传输。 频繁的支持问题是RAID控制器电池故障。 这将数组从回 写模式转换为直 写模式。 当系统以降低的写入速度运行时,显然会有负面的性能影响。 这种情况一直存在,直到可以build立停机时间窗口来closures系统并更换电池。 对我们来说,这是一个非常常规的操作。 几乎每周都有几千台物理服务器…我们甚至有充电站准备更换电池,以便在没有充电周期的情况下进行更换。 也许我被HP ProLiant服务器和智能arraysRAID控制器宠坏了很久,但惠普系统的电池寿命通常为4 – 6年。 他们最终在2009年左右淘汰了使用RAID电池。它们被replace为超级电容支持的内存模块(闪存支持的写caching或FBWC),不需要更换,处理或长时间的初始充电周期。 由于我看到Adaptec和LSI控制器的电池故障有时会发生在服务时间不到 12个月的系统上,所以我想知道这在其他环境中是否常见。 如果这是常见的,其他大型服务器环境如何处理? 处理RAID电池更换的任何提示或技巧? 有没有任何configuration参数可以帮助? 这对你的环境中的操作有什么破坏性? 可怜的机箱冷却和温度是一个因素? 我们做错了什么? 戴尔PERC控制器由LSI制造。 戴尔环境是否会遇到同样短的电池寿命? 大规模集成电路产品文献概述了一种新一代电池,可以在一年内维持更长的使用寿命。 HP ProLiant DL585 G2服务器,拥有超过1000天的正常运行时间和开心的RAID电池… # uptime 05:38:08 up 1031 days, 44 min, 31 users, load average: 0.49, 0.64, 0.99 # hpacucli Cache Board Present: True Cache Status: OK […]
看到build议禁用用于数据库的单个磁盘上的写入caching是非常常见的,因为否则某些磁盘会确认尚未将其写入磁盘表面的写入。 这意味着一些磁盘在写入到磁盘表面之前不会确认写入(更新:或者在被要求刷新caching时准确地报告。我在哪里可以find这样的磁盘,或者我在哪里可以查找权威信息在哪里可以find这样的磁盘? 我正在设置一些真正受益于使用写入caching的数据库服务器,但是应用程序对价格敏感,而且我宁愿将一些cachingRAID控制器的磁盘子系统成本加倍,因为我没有足够的信息知道我是否可以信任每个驱动器中的caching。
主要参考 ZFS L2ARC(Brendan Gregg) (2008-07-22)以及ZFS和混合存储概念(Anatol Studler的博客) (2008-11-11)包括以下图表: 题 我应该解释垂直的白线 – 在SSD层 – 作为使用单独 SSD的首选项 – 不要在单个磁盘上混用L2ARC和ZIL? 背景(对评论的回应) 就我个人而言,我不太可能在任何可用的计算机上使用L2ARC或ZIL。 (我的日常电脑是一个MacBookPro5,2,8GB内存和混合希捷ST750LX003-1AC154。没有计划用SSDreplace光驱。) 其他地方:在工作中会有一些套件的重新调整,但我没有date或完整的细节。 (Xserve RAID x2 …在这个时候我不会想象给那些ZFS,但我保持开放的态度。) 我对 L2ARC和ZIL SSD最佳实践的好奇心始于ZEVO领域的性能相关讨论,特别是下面提到的主题,即用户在单个磁盘上同时具有L2ARC和ZIL。 其他参考和讨论 L2ARC屏幕截图(Brendan Gregg) (2009-01-30) SLOG截图(Brendan Gregg) (2009-06-26) [zfs-discuss] ZFS根备份/“灾难”恢复和移动根池 (2011-01-10)build议在单个磁盘上禁止三种东西(root pool,ZIL和L2ARC) …不值得在试图pipe理同一磁盘上的所有3时可能发生的问题。 例如,如果您决定重新安装并意外地打开数据池的ZIL的内容。 不要为池组件或池共享磁盘以简化pipe理和恢复。 … – 我更感兴趣的是build议不要在单个磁盘上混合两个这样的东西。 https://superuser.com/a/238744/84988(2011-01-28 )提到“caching(L2ARCcaching)和写入日志(ZIL)到SSD”( 单数 )。 但是,因为它涉及到FUSE和Windows,所以我不认为这个答案与ZFS的更常见和更高性能的用途特别相关。 @ChrisS在2011-08-16 在Comms Room中提到了ZIL和L2ARC 。 http://forums.macrumors.com/showpost.php?p=14248388(2012-01-31 )讨论了多个 […]
在2.6.31-302 x86-64内核上运行Ubuntu。 总体问题是,我在“caching”类别中有内存不断上升,即使在我们的应用程序需要它时也不会被释放或使用。 所以这里是我从“免费”命令中得到的。 乍一看,这一切都不寻常。 # free total used free shared buffers cached Mem: 7358492 5750320 1608172 0 7848 1443820 -/+ buffers/cache: 4298652 3059840 Swap: 0 0 0 有人想说的第一件事就是“别担心,linux会自动pipe理这个内存”。 是的,我知道内存pipe理员应该如何工作。 问题在于它没有做正确的事情。 这里“caching”的1.4 GB似乎是保留和不可用的。 我的Linux知识告诉我,3 GB是“免费”的; 但系统的行为却另有说法。 当1.6GB的真实可用内存在高峰使用期间用完时,只要需要更多的内存(并且第一列中的“空闲”接近0),调用OOM杀手,处理被终止,并且问题开始出现即使 – / + buffers / cache行中的'free'仍然有大约1.4 GB的空闲空间。 我已经调整了关键进程的oom_adj值,所以它不会使系统陷入瘫痪,但即使如此,重要的进程也将被杀死,而我们也不希望达到这一点。 特别是当理论上,如果只驱逐磁盘caching,则1.4GB仍然是“免费”的。 有没有人知道这里发生了什么? 互联网充满了关于Linux“自由”命令的愚蠢问题,“为什么我没有任何可用的内存”,因此我找不到任何关于这个问题的信息。 我的脑海里浮现的第一件事就是换掉了。 我们有一个系统pipe理员是坚决的, 如果他们备份,我愿意解释。 这会导致问题吗? 在运行echo 3 > […]