Questions tagged «memory»

RAM的缩写-RAM的缩写。RandomAccess Memory,一种计算机数据存储。

3
页面分配失败-我的内存不足吗?
最近,我在kern.log我的一台服务器中注意到了这样的条目: Feb 16 00:24:05 aramis kernel: swapper: page allocation failure. order:0, mode:0x20 我想知道: 该消息到底是什么意思? 我的服务器内存不足了吗? 交换使用率非常低(不到10%),到目前为止,我还没有发现任何进程由于内存不足而被杀死。 附加信息: 该服务器是运行Debian 6.0的Xen实例(DomU) 它具有512 MB的RAM和512 MB的交换分区 虚拟机内部的CPU负载平均为0.25


2
当内存需求上升时,Linux无法释放大磁盘缓存
在2.6.31-302 x86-64内核上运行Ubuntu。总体问题是我的“高速缓存”类别中的内存一直在增加,即使我们的应用程序需要它也不会被释放或使用。 这就是我从“免费”命令中得到的东西。乍一看,这些都与众不同。 # free total used free shared buffers cached Mem: 7358492 5750320 1608172 0 7848 1443820 -/+ buffers/cache: 4298652 3059840 Swap: 0 0 0 有人要说的第一件事是:“不用担心,Linux自动管理该内存。” 是的,我知道内存管理器应该如何工作;问题在于它没有做正确的事。这里的“缓存” 1.4 GB似乎是保留的,无法使用。 我对Linux的了解告诉我3 GB是“免费”的。但是系统的行为则相反。在高峰使用期间用完1.6 GB的实际可用内存后,一旦需要更多内存(第一列的“可用”接近0),就会调用OOM杀手,杀死进程,并开始出现问题。即使 -/ + buffers / cache行中的“ free”仍然具有约1.4 GB的“ free”。 我已经调整了关键流程的oom_adj值,因此它不会使系统崩溃,但是即使那样,重要的流程也将被杀死,我们永远也不想达到这一点。尤其是从理论上讲,如果仅驱逐磁盘缓存,则1.4GB仍“可用”。 有人知道这里发生了什么吗?互联网上充斥着关于Linux“免费”命令和“为什么我没有任何可用内存”的愚蠢问题,因此我找不到关于此问题的任何信息。 首先出现在我脑海中的是交换已关闭。我们有一个坚定的系统管理员。如果有备份,我可以公开解释。这会引起问题吗? 运行后免费echo 3 > /proc/sys/vm/drop_caches: # free …

4
MySQL可以有效利用64 GB RAM吗?
我们一直在遇到这样一个问题:查询具有约5000万行,索引大小为4 GB(表大小约为6 GB)的表会导致数据库服务器交换内存,并且速度显着降低。我很确定这与超出临时表的大小有关,并且已将其交换到磁盘。 如果我将数据库服务器从32 GB的RAM升级到64 GB的RAM,我想知道MySQL数据库是否能够充分利用此额外的内存而不进行交换。我经历了一些变量(例如KEY_BUFFER_SIZE等),它们似乎支持超过64 GB的设置值。但是,MySQL文档说tmp_table_size的最大值为4 GB。 那么内存升级值得吗?“大表查询”问题将从中受益,还是因为4 GB的限制而无济于事?我知道可能还有其他解决方案,例如重组表以不同的方式进行分区等,但是在不更改表的任何内容的情况下,额外的内存有帮助吗? 而且,通常,从32 GB RAM迁移到64 GB RAM时,MySQL是否还有其他与内存相关的变量无法利用? 我们正在使用64位linux(Ubuntu)作为我们的数据库服务器。 谢谢,盖伦


2
什么是Rowhammer DRAM错误,我该如何处理?
DRAM芯片包装非常紧密。研究表明,相邻位可以随机翻转。 在带有ECC的服务器级DRAM芯片中随机触发错误的可能性是多少(CMU-Intel论文引用了例如,一年中一次故障的未知芯片的编号为9.4x10 ^ -14)? 如何在购买内存之前知道该错误是否已解决? 我该如何应对例如CentOS 7上的租户或非特权用户进行的恶意的特权升级尝试? 参考文献: 利用行锤DRAM错误,解锁对物理内存的访问 翻转内存中的位而不访问它们:DRAM干扰错误的实验研究 Google的PoC回购 零项目撰写
20 security  memory  ecc  bug 

3
Cent OS:如何关闭或减少内存过量使用,这样做安全吗?
有时,“我的”服务器会停顿,因为它耗尽了内存和交换空间。(它一直在响应ping,但仅此而已,甚至没有ssh)。 我被告知linux确实进行了内存过量使用,据我所知,这与银行用钱做的一样:假定大多数进程实际上不会使用他们要求的所有内存,它会为进程提供比实际可用更多的内存。至少不是同时所有。 请假设这实际上是我的系统偶尔挂起的原因,在这里我们不要讨论是否是这种情况(请参阅什么会导致服务器上的所有服务掉线,但仍然对ping作出响应?以及如何找出原因) 。 所以, 如何在CentOS中禁用或减少内存过度使用?我已经阅读了两个设置,分别称为vm.overcommit_memory(值0、1或2)和vm.overcommit_ratiom,但我不知道必须在何处查找和更改它们(希望是一些配置文件),应尝试使用哪些值,以及是否需要重新引导服务器以使更改生效。 而且安全吗?我可以期待什么副作用?谷歌搜索overcommit_memory时,我发现一些可怕的事情,例如人们说他们的服务器无法启动。 由于导致内存使用量突然增加的原因是mysql,因为它是由php进行的查询,而在服务于http请求时又调用了php,所以我希望只有一些php脚本无法完成,因此有时会有500响应服务器太忙,这是我可以冒的风险(一定要好一些,因为整个服务器无法访问,并且必须对其进行硬重启)。 如果选择错误的设置,是否真的会导致服务器无法重新启动?
20 linux  centos  memory  centos5 

2
仅使用InnoDB(5gb数据库)的8gb RAM专用MySQL服务器的最佳MySQL缓存设置
在设置MySQL性能方面,我是一个非常大的菜鸟。老实说,我并不担心微调以压缩MySQL的所有性能,但我确实知道,提供某些最佳结果的最重要的事情是正确设置缓存/缓冲区。 我试图通过仅使用InnoDB作为存储引擎来简化事情。我确实有一个专用于MySQL的服务器。它有8gb的RAM,我应该如何分配它以最大化性能?我希望能够将我的整个数据库放入内存中以获得最佳性能。该数据库约为5gb。这可能吗? 我应该为查询缓存分配多少内存?InnoDB缓冲池要多少钱?其余计算机(即非MySQL相关进程)需要多少钱?等等。 由于我没有使用MyISAM,因此我真的不需要在正确的密钥缓存中放置很多内存吗?

6
Windows Server 2008 R2中的奇怪内存使用情况
我希望有人能帮帮忙。我们有一台具有16GB RAM 的Windows Server 2008 R2计算机,该计算机不断消耗所有可用内存。在没有任务管理器或资源监视器显示使用300MB以上的内存中的任何程序......但在服务器上的内存使用量是15.7GB。 唯一运行的是SQL Server 2008和IIS7.5(带有ASP.Net)。 注意:重新启动后的RAM使用率开始很低,然后逐渐上升。大约一周后,在这种情况下我们不断发现自己。 我怎么能发现正在吃的东西让我们记忆犹新?:(


6
什么在Java进程中消耗内存?
我们正在尝试研究中等负载下Java进程的内存使用情况。 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 12663 test 20 0 8378m 6.0g 4492 S 43 8.4 162:29.95 java 如您所见,我们的常驻内存为6Gb。现在有趣的部分是:使用以下参数执行流程: -Xmx2048m -Xms2048m -XX:NewSize = 512m -XX:MaxDirectMemorySize = 256m ...其他一些用于GC和其他东西的东西 在查看这些设置和实际内存使用量时,我们迷迷糊糊地看到了我们期望此过程使用的内容与实际使用的内容之间的差异。 通常我们的内存问题可以通过分析堆转储来解决,但是在这种情况下,我们的内存用于堆外的某个地方。 问题:尝试找出如此高的内存使用量的原因是什么步骤?哪些工具可以帮助我们确定在此过程中使用什么内存? 编辑0 看起来这不是一个与堆相关的问题,因为我们那里还有很多空间: jmap -heap 12663 结果(编辑以节省空间) Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio …
20 linux  java  memory 

4
在Linux / Arm下对RAM(no-ECC)进行基准测试的最佳方法是什么?
我想在定制板上测试no-ECC存储器芯片的完整性和整体性能 是否有一些在Linux下运行的工具,以便我可以同时监视系统和全局温度? 通常是否有一些没有ECC的特定测试? 编辑1: 我已经知道如何监视温度(我使用特殊的平台功能/sys/devices/platform/......../temp1_input)。 目前 : wazoox:它可以工作,但是我必须编写自己的测试 杰森·亨特利(Jason Huntley): ramspeed:不适用于手臂 流基准测试:它可以运行并且非常快,所以我来看看它是否准确且完整 memtest:我会稍后再试,因为它不能直接从linux运行 fedora的压力:我也会稍后再尝试,对我来说现在安装fedora太麻烦了 我找到了这个发行版:http : //www.stresslinux.org/sl/ 在可能尝试过诸如StressLinux,Memtest,Fedora压力之类的解决方案之后,我将继续检查在Linux下直接运行且没有太大依赖性的工具。 谢谢您的回答,我会继续调查
19 linux  memory  benchmark  arm 

5
如何使SQL Server释放其内存?
我知道SQL喜欢RAM,但是在Windows询问时释放它。我知道这就是SQL应该如何工作的方式。但是我有一个Windows管理员,他不相信SQL会真正返回RAM,并且在此特定(虚拟)服务器上,一旦Analysis Services完成,SQL并不需要太多,但是此服务器上没有其他问题困扰着向SQL索要很多钱。 因此,我试图向Windows管理员保证虚拟环境的问题不是“因为SQL使用了过多的RAM”,但我似乎无法说服SQL在不重新启动服务的情况下将其释放。 在处理多维数据集时,SQL服务会很高兴地占用8GB的RAM,但是由于没有压力,因此在正常情况下不会释放太多内存。Windows人士大喊大叫,让SQL发布它会更好。 我不想使用最大内存设置,因为我确实希望SQL在处理时使用那么多的RAM。我只希望它以后再回落。 这可能是SQL Server不释放内存和从SQL Server回收内存的重复,但是我想知道是否还有其他答案。等待Windows收回它并不会说服Windows专家。重新启动服务是一种选择,但是我真的不喜欢这个想法。 我想知道如何让Windows要求它...

4
镜像模式RAM:是否值得?
对刀片服务器设置的英特尔“镜像通道模式”不是很熟悉(您的典型中等重量的MySQL OLTP数据库在裸机刀片上运行;目前没有虚拟化)。 从英特尔文档中,我能够找到: Intel Xeon Processor 5500系列和Intel Xeon Processor 5600系列支持通道镜像,以在镜像配置中配置DDR3 DIMM的可用通道。镜像配置是内存的冗余映像,即使存在零星不可纠正的错误,它也可以继续运行。通道镜像是一种RAS功能,其中保留了两个相同的内存数据映像,从而提供了最大的冗余度。 在基于Intel服务器主板的Intel Xeon Processor 5500系列和Intel Xeon Processor 5600系列处理器上,跨通道实现了镜像。活动通道保存系统映像的主映像,其他通道保存系统内存的辅助映像。Intel Xeon Processor 5500系列和Intel Xeon Processor 5600系列处理器中的集成内存控制器在两个通道之间交替进行读取事务。在正常情况下,写事务会同时发布到两个通道。 但是,我并没有真正了解他们在这里躺着的东西。我失去了一半的存储容量,但获得了“冗余”内存并可能获得读/写性能优势?像RAID 1的RAM吗?有人对此配置有任何实践经验吗?
18 memory 

4
如何确定基于Apache / PHP的Web应用程序中明显的内存泄漏的原因?
我的EC2实例大约每周一次,但有时甚至一天运行几次,几天后,我的EC2实例变得无响应。Munin的内存图讲述了一个非常简单的故事:分配给“应用程序”的内存开始增长,并且直到交换功能被完全使用并且实例被有效地压倒才停止。另一个自定义图形显示不断增长的过程是apache2。 我使用mod_php和一些PHP脚本运行标准的prefork Apache安装程序。正如您在下图中所看到的,发生了一些事情,这些事件触发apache2进程开始消耗越来越多的内存。我遇到了第一个绿色高峰,在事情失控之前重新启动了Apache。第二个峰值进一步扩大了,该实例必须完全重新启动。 穆宁记忆图 我想知道的是如何最好地调试它。缺少使用FastCGI设置PHP并使其在自己的进程中运行的方法,找出它是Apache还是PHP和我的代码的组合导致过多内存使用的好方法是什么?你们将采取什么步骤来跟踪此问题? 更新:在涉及到strace之后,我能够跟踪泄漏,如Matt所建议的那样。 找到内存中逐渐且持续增长的apache2进程后,我在PHP脚本中添加了更多error_log()调用,以打印出在执行过程中各个点使用的RSS总量(使用ps的输出)。但是事实证明这是令人误解的-尽管似乎RSS仅在执行完脚本后才跳起来,但后来的调试表明事实并非如此。小心! 幸运的是,所有这些error_log()调用最终都非常有用。当我启动strace(strace -p <pid> -tt -o trace.log -s 256)时,我发现对于每个请求,该进程都在分配约400k的内存(查找“ brk”系统调用,并从上次调用中减去第一个调用的参数-通常有几个传入)一个接一个)。然后,我搜索了包含我的error_log()消息的最新“写入”系统调用,该消息告诉我在脚本中的哪个位置分配了内存。通过再战略性地放置几个error_log()调用以更精确地定位位置,我终于找到了罪魁祸首。 当我们从PHP脚本中调用curl_exec()时,内存正在泄漏。一些与处理SSL连接有关的curl代码做错了-当我切换到HTTP时,泄漏消失了。Curl的changelog引用了7.19.5(我们在7.18.2中已修复)中的一些SSL内存泄漏,因此我将在下一个尝试。 同时,我正在以非常低的MaxRequestsPerChild运行,这使Apache处于合理范围之内。感谢大家!
18 php  apache-2.2  memory 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.