我想知道是否有一个替代的命令,我目前正在使用获取系统的真正的可用内存(意味着可以分配给新的domU的内存) xm info | grep free_memory 我有一个脚本,读取服务器的几个参数(如盘占空等),不能超过约10秒,信息/ proc / meminfo只是相对于dom0,而不是系统。 处理文件xm信息的时间通常是大约100ms,但多次超过1sec 前一段时间,我在计算lvm卷的大小时遇到了同样的问题,所以我再次尝试:)
我正在configuration一个针对我的域中的所有服务器的性能监视器。 我使用WhatsUp Gold 16.2来发送警报,当我们达到一定的阈值。 我最近读了微软的一篇文章,达到150页/秒是一个可接受的门槛。 WUG的问题是我能测量的最小单位是一分钟。 我想过要乘以150 * 60,并发出9000多的警报,但这似乎并不是一个很好的内存压力指标 我的一个系统pipe理员创build了一个监视器,一旦我们在30分钟内发生了4000多页错误,就会发出警报。 我不认为这比我上面提出的监视器更好。 4000页故障监视器的示例: 物理,而不是VM Server 2003 R2 w / SP2在远程办公室中用作域控制器32位4 GB RAM 4 GB页面文件2个过程2.8 GHz RAM 30天图:平均:18.5%最高:26.6% 虚拟内存30天图:平均:5.38%最大:6.66% 上述系统在30分钟内发出超过4400页的错误警报。 数据显而易见,没有内存压力可言,4000页的故障监控也不是一个好的问题指标。 我的环境大部分是虚拟的(VMWare和Hyper-V),主要是VMWare。 大多数服务器都是Server 2008的变体,2003年很less,几个2012年。很less有物理的。 我的问题真的归结为: 我应该监测什么样的门槛,并以高达1分钟的采样率发出警报?
问题: 我们的虚拟化数据库服务器上的一些东西正在使用大量的页面文件。 我们注意到,一个星期前,操作系统驱动器在一个下午从30 + GB的可用空间变成了大约500KB的可用空间。 我find了一个巨大的页面文件(75 + GB)的forms用完了空间。 我closures了系统pipe理的页面文件,并将其分成4个逻辑磁盘(4个不同的物理arrays)。 我们现在只是面临内存不足的错误,而不是服务器似乎有几千兆字节的未使用的RAM,而不是耗尽硬盘空间和内存不足的错误。 我不知道如何find确切的原因,但是我已经运行了一些我曾经希望能够使问题的根源非常清楚的工具,但是对我来说没有什么明显的。 细节: 运行Sql Server 2008的虚拟化Windows Server 2008 R2 分配给VM的32 GB静态分配的RAM Sql Server被configuration为使用18GB 小MySql实例也在运行 query_cache_limit设置为8MB query_cache_size设置为128MB 有域控制器的angular色,是一个全球目录(是的,我知道它不应该是一个域控制器,但我们有限的资源) 页面文件分解成4个逻辑磁盘上的4个部分,每个逻辑磁盘都是它自己的vhd在主机虚拟服务器上的物理arrays上 页面文件设置为8192MB分钟,每个部分最多12288MB 原始页面文件是48GB并dynamic扩展 线程和进程在问题期间保持相同的数字,而问题不会发生 – 线程:〜720-750,进程:〜62 我试过的东西: 限制SQL Server到更less的RAM – 14GB – 没有效果 停止并禁用MySql5.5服务,然后重新启动 增加Sql Server使用更多的RAM – 28GB – 没有效果 由Sysinternals运行RAMMap – 没有什么不寻常的出现 我无法永久停止MySql服务,并且Sql Server服务需要在白天继续运行。 似乎有内存或页面文件的使用情况,远程服务器甚至不可能由于缺乏资源,然后不久,我可以再次连接。 几分钟后,我甚至不能打开记事本或taskmanager。 屏幕上出现大量与内存不足有关的错误信息(我没有这个function,因为这个时候没有问题,但是在发生错误时我会更新错误)。 整个过程中,taskmanager说有几GB的空闲物理内存(在12GB和2GB之间,取决于分配给Sql […]
我想我有问题设置Apache24正确。 Apache似乎占用了很多内存,我不知道如何configuration它。 FreeBSD服务器使用了50%的交换空间。 我们正在使用2Gb RAM的FreeBSD VPS上运行带有MySQL 5.6的Magento。 服务器每天只有大约500位独立访问者。 我的知识是有限的。 丝毫的线索将不胜感激。 my.cnf中 [mysqld] innodb_buffer_pool_size = 256M sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES prefork mpm <IfModule mpm_prefork_module> StartServers 3 MinSpareServers 3 MaxSpareServers 6 MaxRequestWorkers 8 MaxConnectionsPerChild 1000 </IfModule> php.ini中 memory_limit = 256M opcache.enable=1 opcache.memory_consumption=192 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.enable_cli=1 htaccess的 php_value memory_limit 512M 的httpd-default.conf Timeout 30 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 2 […]
我在主机上安装了Centos 6.5,qemu + KVM和2个虚拟主机(在NAT后面)。 这两个虚拟主机都configuration了虚拟机pipe理器(其中一个与Windows 2003和其他与Centos 6.5),都有固定的内存(8Gb和4Gb)。 我有2个问题/问题。 如果我在Virt.manager中configuration了不固定的RAM容量(不允许使用从4Gb到8Gb),我的虚拟机将在主机(大于8Gb)内占用所有可用内存, 在主机的htop中,我看不到每个虚拟机都有一个qemu进程,但是有很多相同的进程。 机。 哪里不对? 如果我进入virt.machine并检查免费-m我看到有很多免费的内存。 新增(VM domxml): <domain type='kvm'> <name>myvm</name> <uuid>27934a14-b54e-1e4e-65de-7f6d03b1e7ce</uuid> <memory unit='KiB'>8388608</memory> <currentMemory unit='KiB'>8388608</currentMemory> <vcpu placement='static'>2</vcpu> <os> <type arch='x86_64' machine='rhel6.6.0'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='none'/> <source file='/var/lib/libvirt/images/myvm.img'/> <target dev='vda' […]
我正在尝试监视思科进程的内存使用情况。 这是我用命令行得到的: show system internal processes memory | inc PID|ipfib PID TTY STAT TIME MAJFLT TRS RSS VSZ %MEM COMMAND 6069 ? Ssl 00:14:01 0 0 169480 532812 1.0 /lc/isan/bin/ipfib 我想用我的SNMP轮询器来获取这个信息,到目前为止我只发现1.3.6.1.4.1.9.9.109.1.2.1.1拥有所有的进程名,pid,进程的用法。 我所需要的只是内存的使用,但是我找不到它。
我正在使用ManifoldCF来帮助将文档索引到Solr。 Solrconfiguration为Cloud-Mode,具有一个节点/内核和一个外部ZooKeeper(与运行Solr的机器相同)。 ManifoldCF从本地硬盘读取文件(大约2300,总大小为2,4GB)。 两个系统都使用SUSE Enterprise和HotSpot JVM在VM中运行。 运行Solr的机器已被设置为2.5 GB,其中Solr允许使用最多2个。其他机器运行歧pipe当前设置为8 GB。 我使用以下命令(以root身份)调用Manifold: java -Xmx7168m -jar manifoldcf/example/start.jar 索引过程完美无缺地工作,除了Manifold耗尽内存并开始抛出OutOfMemoryExceptionexception并崩溃时,它会突然停止。 除了设置Solr中使用的Tika-Parser来忽略exception外,我还没有改变Manifoldconfiguration中的任何内容,因为当扫描具有未知/不同格式的文档时,这些会中断索引处理。 我已经尝试使用OpenJDK以及更改为Ubuntu,这并没有真正改变任何东西。 使用更多或更less的内存(以及更改Java内存参数)也导致了同样的问题。 我也看了一下垃圾收集(使用-XX:+ PrintGCDetails -XX:+ PrintGCTimeStamps -XX:+ HeapDumpOnOutOfMemoryError -Xloggc:/root/Documents/gc.log),结果可以在这里find 。 使用(less)文件,索引处理完成,但是内存使用率保持高水平,并且在索引第二批文档时进一步上升,导致内存相关崩溃(控制台输出在应用程序之前显示该错误消息稍后退出)。 虚拟机运行在16 GB内存的计算机上,带有HyperThreading(i7-4790)的3,6GHz-Quadcore,都可以使用全部4核,CPU负载范围从低到中。 现在我的问题:这是一个ManifoldCF或Solr中的错误,还是它与设置或configuration的某个方面? 如果是我的错,那么用什么方法来解决呢? (如果这实际上是一个错误或者是我无法修复的问题,那么也可以selectManifoldCF的替代品(除了Simple Post Tool之外)
我正在运行一个Arch Linux主机(安装了32GB内存)和一些虚拟机,我可以根据需要启动/closures(实际上它是一个共享的开发者工具箱,值得)。 我注意到了以下行为: 当VMWare启动并运行时,系统会主动caching虚拟机在RAM中使用的内容。 当虚拟机运行时,主机RAMcaching将膨胀至〜28GB。 客人被限制在4GB,通常运行〜2-3GB。 当主机达到200MB的空闲RAM时,速度会变慢。 在添加交换之前,它会冻结并需要重新启动。 现在,只要我手动释放caching,只要我及时捕捉,就会变得难以忍受。 如果不是,它仍然需要一个硬重启。 没有恐慌,它只是坐在那里,闪烁在我身上。 "free -h"报告总共31GB,使用2.5-4GB,<200MB免费,〜100MB共享,〜28GB缓冲/caching,~28GB可用。 运行"sudo bash -c "echo 3 > /proc/sys/vm/drop_caches"交换free和buff / cache列。 请注意,进程杀手没有被调用(我不明白为什么不是),当内存压力很高时,指向caching的所有内容都应该被释放。 但事实并非如此。 它仍然坐在一个健康的28小时的GB。 我没有安装任何其他应用程序,经常更换RAM,所以我不知道如何testing这个理论,无论是VMWare还是主机本身。 其他的一切都非常稳固或啜饮内存。 甚至火狐浏览器也不会造成这个问题。 有趣的是,清除caching后,主机也变得更快 – 虽然这可能只是我的想象。 就这样说,我的问题是: 有没有办法在每个进程的基础上禁用内存caching? 如果没有,是否有任何方法完全禁用内存caching,意识到这会导致主机放缓? 为什么不在低RAM下调用进程杀手? dmesg / journalctl报告没有问题。 为什么高速caching在高内存压力下被清除? 为什么客人报告使用3GB + 1GB vram时使用"free"报告2GB? 我会说实话,我只是一个开发人员有点卡住了系统pipe理员的angular色。 我真的不知道发生了什么事情。 感谢您的帮助或见解。
这与这个问题有关,并将其扩展。 症状是相同的 – 2012R2 X64与64GB内存(21GB使用), ping和nslookup都工作正常,但IE浏览器将不会打开网页, net use X: \\share返回错误1450 “存在不足的系统资源请求的服务“,并且PuTTY提供错误”networking错误,没有可用的缓冲区空间“ 。 我可以按照这个问题的build议或增加各种TCP参数,但是我怀疑这个问题真的存在于某个进程或其他地方,如果可以的话,我想解决潜在的问题,因为它是经常性的。 问题是,大多数在线解决scheme似乎是指Windows XP和x86架构,而他们的解决scheme是“使用基于x64的系统”,所以我不确定如何使它们适应x64具有足够的内存。 或者,如果是单个进程泄漏内核缓冲区,那么如何查看每个进程的打开缓冲区计数,以便closures或避免负责泄漏或保留缓冲区的进程,而不用通过“试错”来终止用户和系统进程“? 相关的registry设置: [HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management] "NonPagedPoolQuota"=dword:00000000 "NonPagedPoolSize"=dword:00000000 "SessionViewSize"=dword:00000030 "SystemPages"=dword:00000000 "SecondLevelDataCache"=dword:00000000 "SessionPoolSize"=dword:00000014 "DisablePagingExecutive"=dword:00000001 "PagedPoolSize"=dword:00000000 "PagedPoolQuota"=dword:00000000 "PhysicalAddressExtension"=dword:00000001 "LargeSystemCache"=dword:00000001 "DisablePageCombining"=dword:00000001 Poolmon输出: Memory:67045348K Avail:43088144K PageFlts: 26887 InRam Krnl:34360K P:998960K Commit:17896772K Limit:68093924K Peak: 21003948K Pool N: 863288K P:1038320K
我在/etc/cgconfig.conf中定义了一个全局cgroup,它限制了内存的数量。 每次用户运行一个命令时,我都会使用cgexec将进程及其subprocess添加到受控组。 有时候限制会引发并杀死用户进程。 如果退出代码不是0 ,我怎么知道这个进程是否由于某些内部逻辑而失败,或者是否已经被cgroup机制终止? 它运行在用户空间,所以我想避免parsing/var/log/syslog 。