问题 内核为2.6.32和128 GB的物理内存的CentOS机器几天前遇到麻烦。 负责的系统pipe理员告诉我,由于交换,PHP-FPM应用程序不再及时响应请求,并且free看到几乎没有剩余内存,他select重新启动机器。 我知道可用内存在Linux上可能是一个令人困惑的概念,重启也许是错误的做法。 然而,提到的pipe理员指责PHP应用程序(我负责),并拒绝进一步调查。 我能够自己find的是这样的: 在重新启动之前,空闲内存(包括缓冲区和caching)只有几百MB。 在重新启动之前, /proc/meminfo报告了大约90 GB的板内存使用情况(是,GB)。 重新启动后,空闲内存为119 GB,在一小时内下降到100 GB左右,因为PHP-FPM工作人员(其中约600人)正在恢复生机,每个人都显示30到40 MB RES列(最近几个月已经这样了,考虑到PHP应用程序的性质,它是完全合理的)。 进程列表中没有任何内容会消耗不寻常的或值得注意的RAM数量。 重新启动后,Slab内存大约为300 MB 如果自那时以来一直在监视系统,最值得注意的是Slab内存以每天5GB的速度直线增长。 free和/proc/meminfo报告的free内存以相同的速率下降。 Slab目前在46 GB。 根据slabtop大部分是用于dentry条目: 可用内存: free -m total used free shared buffers cached Mem: 129048 76435 52612 0 144 7675 -/+ buffers/cache: 68615 60432 Swap: 8191 0 8191 meminfo中: cat /proc/meminfo MemTotal: 132145324 kB MemFree: […]
人们总是告诉我,为了提高SQL服务器的性能,用RAID 5等购买最快的硬盘。 所以我在想,不是把所有的钱花在RAID 5和超级快速硬盘上(这种方式并不便宜),为什么不只是得到大量的内存呢? 我们知道一个SQL服务器将数据库加载到内存中。 内存比任何硬盘都快。 为什么不在一台服务器上像100 GB的内存? 那么只需使用RAID 1的普通SCSI硬盘即可。难道这样便宜又快吗?
我有一台运行Windows Server 2008 R2 x64的服务器,配有4GB的RAM,大约有2-3百万个文件,其中大部分是图像文件。 在一个星期的时间里,我注意到服务器上的应用程序由于内存不足而导致磁盘过度分页,从而导致缓慢的爬行,这对当前正在运行的所有服务产生了连锁效应,性能问题。 在任务pipe理器中进行调查后,我发现几乎所有的4GB都在使用中,但是在“进程”选项卡中查看时,所有内存使用情况的总和不会相加,最多只能使用1.5GB。 使用Google查找解决scheme,看起来大部分内存使用在“图元文件”中,这是文件系统上文件的NTFS信息caching,因此系统不必再次向MFT查询信息。 这个caching在任务pipe理器中永远不会被清除或标记为“caching”,或者在Sysinternal的RamMap中被标记为“备用”。 有一个build议安装KB979149修补程序,但尝试安装它时,它说“此更新不适用于您的计算机”。 到目前为止我发现的唯一临时修复是: 使用Sysinternals的RAMmap每隔1-3天“清空系统工作集”,在任务pipe理器中将caching标记为“待机”和“caching”,这样RAM可以被其他应用程序使用。 重新启动机器,这是不可取的,因为这台服务器正在服务于公共网站。 目前,我不得不每隔几天执行一次,以防止瓶颈达到瓶颈。 之前:(使用800MB RAM – 其他应用程序不能使用此RAM) 之后:(800MB RAM标记为caching – 可用于其他应用程序) 所以我的问题都是:是否有任何方法限制这个图元文件的内存使用量?
当我使用默认设置时: vm.overcommit_memory = 0 vm.overcommit_ratio = 50 我可以从/proc/meminfo文件读取这些值: CommitLimit: 2609604 kB Committed_AS: 1579976 kB 但是,当我将vm.overcommit_memory从0更改为2 ,我无法启动在更改之前启动的同一组应用程序,特别是amarok。 我必须将vm.overcommit_ratio更改为300 ,因此可以增加限制。 现在,当我启动amarok时, /proc/meminfo显示如下: CommitLimit: 5171884 kB Committed_AS: 3929668 kB 这台机器只有1GiB的RAM,但是当vm.overcommit_memory设置为0时,amarok没有问题。但是在设置为2的情况下,amarok需要分配超过2GiB的内存。 这是一个正常的行为? 如果是这样,任何人都可以解释为什么,例如,firefox(消耗比amarok多4-6倍的内存)在更改之前和之后以相同的方式工作?
我们目前正在devise新的数据库服务器,并且提出了一个折衷,我不完全确定如何回答。 这些是我们的select:48GB 1333MHz或96GB 1066MHz。 我的想法是,内存应该是丰富的数据库服务器(我们有充足的数据和一些非常大的查询),而不是尽可能快。 显然我们无法获得1333MHz的16GB芯片,因此上面的select。 那么,我们应该得到很多更慢的RAM,还是更快的RAM? 额外信息: 可用DIMM插槽数量:6 服务器:戴尔刀片服务器CPU:6核(由于Oracle许可证,只有单一插槽)。
DIMM的“排名”与服务器内存有什么不同? 例如,在查看服务器configuration时,我看到为同一台服务器提供了以下内容: 2GB (1x2GB) Single Rank PC3-10600 CL9 ECC DDR3-1333 VLP RDIMM 2GB (1x2GB) Dual Rank PC3-10600 CL9 ECC DDR3-1333 VLP RDIMM 考虑到单等级对双等级或双等级对四等级的select总是: 更快? 便宜? 更高的带宽? 以下是关于这个主题的IBM(第7页) ,至less关于HS22: 确保在每个通道中安装具有适当级别的DIMM以获得最佳性能是非常重要的。 在可能的情况下,build议在系统中使用双列DIMM。 双列DIMM与单列DIMM相比,提供了更好的交叉存取性能,因此性能更佳。 例如,装有6个2GB双列DIMM的系统比SPECjbb2005的6个2GB单列DIMM的系统性能高出7%。 双列DIMM也优于四列DIMM,因为四列DIMM会导致内存速度下降。 另一个重要的指导方针是填充每个通道的等效等级。 例如,应该避免在通道中混合一个单列DIMM和一个双列DIMM。 最终,每个服务器/芯片组的内存排名数量的影响是特定的。 例如,在IBM的x3850X5服务器上, 排名更好 (参见§3.8.4): 使用X3850 X5中的Xeon 7500/6500处理器,拥有更多的等级可以提供更好的性能。 原因是由于寻址scheme,它可以扩展页面之间的行列,从而使页面有效地更大,因此更多的页面击中周期。
我目前正在使用Joyent加速器来托pipe我的web应用程序,而且工作正常,但是我需要降低成本,因此我要降级目前的计划,并强加一些新的内存限制(256M rss,512M swap)。 昨天我并没有太在意,但今天几次重启Apache之后,我现在是411M rss,721M swap(prstat -Z -s cpu)。 在服务器中search故障只给了我很多方法和特定的工具来监视服务器,但没有关于如何减less/优化内存使用的build议。 我也看到了这个问题 ,但是我不认为这对于这个特殊的(或者我可以说通用的)情况是有好处的。 服务器在共享CPU上运行Solaris,并使用Apache + MySQL + PHP堆栈。 我有兴趣知道可以采取的步骤来解决这个问题。 然而,我也没有时间来减less我的记忆足迹,并降低计划在目前的结束之前,所以任何可以使魔术和节省一天,以及:)
任务pipe理器显示svchost.exe的整体内存使用情况。 有没有办法查看单个服务的内存使用情况? 注意这与svchost.exe的Finegrained性能报告类似
是否有可能将分配给进程的当前内存(通过PID)转储到文件? 或者以某种方式读取它?
我有一个生产主机,如下所示: 系统使用1GB的交换空间,同时保留将近40GB的空闲空间。 我应该关心这个还是大部分是正常的?