在过去的时代(虚拟化之前),内存的功率/倍数是2,因为这是内存制造的方式。 现在我们创build的虚拟服务器没有真实的物理内存,人们仍然使用2的倍数/倍数来创build虚拟服务器。 是否有任何理由继续这样做(performance或其他)或者这是人们所做的事情,因为这是他们习惯的?
高可用性群集中有一对ESXi(5.1)主机。 每台主机都有48GB的RAM。 我目前有18个VM正在运行,具有以下configuration的内存量: 1个4GB,1个vCPU 1个4GB,4个vCPU 5x 2GB,1个vCPU 5x 1GB,1个vCPU 4个512MB,1个vCPU 2个512MB,1个vCPU,容错(消耗的内存翻倍) 这应该加起来27GB的RAM。 根据“ 资源pipe理指南” (对于一个2 GB,1个vCPU虚拟机,假设38 MB开销,512 MB 1个vCPU虚拟机需要23 MB),开销约为28 MB。 当我查看各个主机时,正在使用的内存似乎与此相符。 在“摘要”选项卡上,对于“内存使用情况”,一台主机显示14240.00 MB,另一台显示14897.00 MB,总计大约28.5 GB。 但是,vSphere Client中群集的“资源分配”选项卡显示以下内容: 总容量:89705 MB 预留容量:47210 MB 可用容量:42495 MB 撇开两台主机之间的48 GB内存是98304 MB而不是89705这个事实,为什么预留容量如此之高呢? 单个主机声称使用的内存(28 GB)与群集声称使用的内存(46 GB)之间差不多有20 GB。 而且,这使得我无法添加新的虚拟机,因为HA集群需要能够容忍一台主机的故障,并且软件认为我正在满负荷运行。 我所有的虚拟机都configuration了没有内存限制,没有内存预留,除了两个容错虚拟机,其所有的RAM都保留。 这是与vSphere 5.1标准许可证。
我一直在进行性能监控的服务器之一,开始从资源耗尽探测器发出以下警告: Windows成功诊断出虚拟内存不足的情况。 以下程序消耗的虚拟内存最多:sqlservr.exe(1560)消耗了14960812032个字节,ReportingServicesService.exe(1936)消耗了506359808个字节,w3wp.exe(7376)消耗了273764352个字节。 SystemCommitLimit 38068215808 SystemCommitCharge 37800669184 ProcessCommitCharge 16727490560 PagedPoolUsage 359088128 PhysicalMemorySize 17098584064 PhysicalMemoryUsage 16881131520 NonPagedPoolUsage 221425664进程48 这个服务器是windows server 2008,运行MSSQL 2008 R2,有16GB的RAM和24个处理器。 它运行SQL,并为数据访问SQL的Web服务。 我引用的数字来自事件查看器的详细信息部分。 我一直无法找出根本原因。 我已经知道SQL需要大量的内存来运行,而且当时使用了大量的内存,但是我也把它设置为14000MB。 除Resource-Exhaustion-Detector警告外,SQL开始出现Out of Memory错误。 find根本原因的最佳方法是什么? 我没有看到任何在日志中看起来不寻常的东西。 经过几个小时的这个错误重复一遍又一遍,内存终于耗尽,服务开始失败,直到服务不得不重新启动。 当有压力的时候,SQL是不是聪明地放弃了一些内存呢? 页面文件(虚拟内存)是20GB,而SQL只使用了16GB的物理内存。 什么填补了虚拟内存的其余部分? SQL实际上是使用所有的页面文件? 我应该寻找内存泄漏吗? 日志文件增长? 服务器上使用最多的.mdf每天增长大约100MB。 日志文件一直在增长3GB,现在是40GB。 通常当有内存压力时,我们从来没有到达服务器崩溃的地步。 它通常只是缓慢地运行,直到压力消失。 有没有办法有效地阻止这个问题的发生?
我观察到我无法解释的以下行为:由服务器报告的可用物理内存量增加,而由大多数耗尽内存的进程(Web服务器进程)报告的“Res”内存几乎是平坦的。 我主要想了解的是:如果物理内存的使用增加,而进程所报告的驻留内存是恒定的,那么怎么可能呢? 在这些过程中会发生什么事情来引起这种可观察到的行为,特别是不会产生太多的负载? 换句话说,在一个过程中会发生什么事情,以至于“记忆”首先被报告为“居民”,但实际上并没有占用任何物理记忆的变化,以至于仍被报告为“居民”,但现在也居然占据了物理内存? 例如:我有一个2GB内存的虚拟服务器。 昨天中午12:00,大约有800MB(40%)正在使用,据报道由top / free [1]。 大多数是由几个进程使用,共同报告使用大约1.2GB的驻留内存[2]。 然后,我开始了一些testing(执行这些进程提供的大量HTTP请求),将物理内存使用率提高到1.2GB(60%),并将进程使用的驻留内存增加到了3.2GB。 之后,我根本没有碰到服务器,也没有公开提供:之后的负载<0.03。 尽pipe如此,虽然由进程报告的常驻内存平均为3.2GB,但物理内存使用缓慢增加,并且有一点超过了90%(1.8GB),导致了标志提升。 在这些Web服务器进程中,当时没有任何事情发生(如负载所certificate的),并且没有任何特殊的作业正在运行。 上面的场景图可以在这里看到。 上图显示的是什么top / free报告为空闲物理内存。 下图显示的是“Res”栏中的top报告。 请注意,标记为Ruby的区域总共是6个进程。 [1]通常在这些服务器上,所有内存被标记为“已使用”,所有空闲内存用于caching。 我的意思是:直到最后一个字节。 top和free所有其他数字都是0。 [2]我知道由几个进程报告的常驻内存的总和可以超过所使用的物理内存,但我不认为我知道所有这些可能发生的方式。
我们计划从惠普购买两台不同的服务器。 他们将用于我们进行大量统计分析和Java开发/testing等的项目。服务器是: a)部分:ML350e 2403 CTO型号:HP ProLiant ML350e Gen8 b)部件号737650-375型号:HP ProLiant ML10 根据可用性考虑RAM模型:a)8GB单模块部件号:647897-b21 b)16 GB单模块部件号:647901-b21 (我相信都是注册的) 操作系统:testing阶段1:Windows Server 2008testing阶段2:Centos(以最新版本为准) 我们应该去注册types还是未注册?
我知道Linux喜欢吃我的RAM,这很好,但是这并不能说明我在运行CentOS 6.5的VPS(KVM)上看到的东西。 事实上,我在一个1GB的虚拟机上至less缺less了200MB。 它可能在哪里? total used free shared buffers cached Mem: 996 907 89 0 76 379 -/+ buffers/cache: 451 545 Swap: 1023 5 1018 free -m表明,没有缓冲区/caching,系统使用451 MB内存。 但是,运行的程序(主要是nginx / php-fpm / mysqld / sshd)没有办法加起来那么多的RAM。 ps_mem报告90MB目前正在被程序使用,这里是什么smem说: Area Used Cache Noncache firmware/hardware 0 0 0 kernel image 0 0 0 kernel dynamic memory 820912 775204 45708 […]
我们将在下周testingrackspace云,以了解它是如何与我们的networking应用程序一起工作的。 这是一个有很多MySQL数据库的LAMP环境。 如何select“正确的”服务器大小? 在Rackspace上,我可以select内存为256,512,1024,2048,4096等的片 现在我们没有很多stream量(每天约1000人次),但我认为整个“云”的想法是不受限制和自动扩展。 更新:我在找什么现在是我需要的规范。 我知道这太复杂了。 我正在寻找示例,案例研究等等。听到类似“是的,我们正在服务每天10000个请求,没有在LAMP堆栈上发生尖峰,而只有一个带有2GB RAM的片”。
我试图find一种方法来检测(使用软件),如果我所在的系统具有“没有eXecute”位function。 在Linux下,我只是使用/ proc / cpuinfo列出CPUfunction,但是在Windows上我没有发现这方面的内容。 我试过CPU-Z和其他一些工具,但没有一个有NX位信息。 有任何想法吗?
我有一个256MB DRAM的思科2811。 我知道这个,因为show version告诉我。 我想升级到768MB。 我知道这需要1 – 512MB和1 – 256MB的DIMM。 我知道2811有2个内存插槽。 我不知道的是我的256 MB是2 – 128MB DIMM还是1 – 256MB DIMM。 有没有一个IOS命令让我find这个,如果是的话是什么? 我现在不在路由器附近,所以简单地closures电源,取下盖子是一个不起眼的事情,不过这很简单,我们只是说现场的工作人员不能进入我的内部路由器,我会更快乐。 我注定要驾车过了几个小时,否则购买额外的可笑的昂贵DIMM我可能不需要?
我们正在运行一些X64的Win Server 2012的Web服务器(所以IIS 8)。 我们注意到盒子上的空闲内存始终保持5-10%的空闲空间。 实际上,我们在这些框上运行了很多应用程序(13个网站,超过13个应用程序池的80个应用程序)。 大部分代码都是为每个站点重复的,因为它们对应于不同的数据库和物理站点,但应用程序是相同的。 我们非常有信心,随着内存的不断增长,我们在应用程序中出现了内存泄漏,所以我们直截了当地看待这个问题,但是我感到困惑的是IIS的内存分配和pipe理。 我想知道,如果它是IIS 8或x64服务器(我们刚刚移动到最近x64)的任何不同。 所以基本上我们的每个networking服务器都有6GB的内存,并且会占用5-10%的空闲内存。 我们确信的顶级应用泄漏是使用高达1.2GB的内存。 下一个是大约800MB,其余的平均为大约400-500MB(所有这些值是私人内存,在任务pipe理器中看到)正如我所说的代码是重复的,所以如果有一个网站泄漏,将在所有的他们只是不同的物理位置可以有一些function打开或closures,这说明了很大的差异。 当我们解决这个问题的时候,我们决定去记忆,所以我们不会遇到问题。 所以昨天晚上,我把每台服务器放下,把内存翻了一番,达到了12GB。 今天早上,3台服务器占用内存的77%,80%和82%。 所有的进程都增加了1.5-2倍的内存使用量。 所以现在我很困惑。 这真的是内存泄漏吗? 还是有某种内存预分配? 还是从来没有释放内存,除非另一个进程请求它一个SQL Server或什么? 当内存翻倍时,如果内存水平突然变得如此巨大,那么在6GB的内存水平上呢? 有没有定下的门槛? IIS / ASP是不是垃圾收集,直到内存不足或什么? 任何答案表示赞赏。