Tim*_*mur 146 memory linux performance
在实际询问之前,要清楚:是的,我知道磁盘缓存,不,这不是我的情况:) 抱歉,对于这个序言:)
我用的是CentOS 5。系统中的每个应用程序都在大量交换,并且系统非常慢。当我这样做时free -m,这是我得到的:
total used free shared buffers cached
Mem: 3952 3929 22 0 1 18
-/+ buffers/cache: 3909 42
Swap: 16383 46 16337
Run Code Online (Sandbox Code Playgroud)
所以,我实际上只有 42 Mb 可以使用!据我了解,-/+ buffers/cache实际上并没有计算磁盘缓存,所以我确实只有42 Mb,对吗?我想,我可能是错的,所以我试图关闭磁盘缓存,但没有效果——图片保持不变。
所以,我决定找出谁在使用我所有的 RAM,然后我就使用top了它。但是,显然,它报告说没有进程正在使用我的 RAM。我最上面的唯一进程是 MySQL,但它使用 0.1% 的 RAM 和 400Mb 的交换。当我尝试运行其他服务或应用程序时相同的图片 - 全部进入交换,top显示未使用 MEM(任何进程的最大值为 0.1%)。
top - 15:09:00 up 2:09, 2 users, load average: 0.02, 0.16, 0.11
Tasks: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 4046868k total, 4001368k used, 45500k free, 748k buffers
Swap: 16777208k total, 68840k used, 16708368k free, 16632k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP COMMAND
3214 ntp 15 0 23412 5044 3916 S 0.0 0.1 0:00.00 17m ntpd
2319 root 5 -10 12648 4460 3184 S 0.0 0.1 0:00.00 8188 iscsid
2168 root RT 0 22120 3692 2848 S 0.0 0.1 0:00.00 17m multipathd
5113 mysql 18 0 474m 2356 856 S 0.0 0.1 0:00.11 472m mysqld
4106 root 34 19 251m 1944 1360 S 0.0 0.0 0:00.11 249m yum-updatesd
4109 root 15 0 90152 1904 1772 S 0.0 0.0 0:00.18 86m sshd
5175 root 15 0 90156 1896 1772 S 0.0 0.0 0:00.02 86m sshd
Run Code Online (Sandbox Code Playgroud)
重新启动无济于事,而且速度非常慢,我通常不会在这台机器(4 核、4Gb RAM、RAID1)上期待这种情况。
所以,有了这个 - 我很确定这不是一个使用 RAM 的磁盘缓存,因为通常它应该被减少并让其他进程使用 RAM,而不是去交换。
所以,最后,问题是 - 如果有人有任何想法如何找出实际如此大量使用内存的进程?
Kar*_*son 127
在 Linuxtop进程中你可以按<键将输出显示排序左移。默认情况下,它按 排序,%CPU因此如果您按 4 次键,您将按VIRT虚拟内存大小对其进行排序,从而为您提供答案。
另一种方法是:
ps -e -o pid,vsz,comm= | sort -n -k 2
Run Code Online (Sandbox Code Playgroud)
应该给你和输出按进程虚拟大小排序。
这是长版:
ps --everyone --format=pid,vsz,comm= | sort --numeric-sort --key=2
Run Code Online (Sandbox Code Playgroud)
小智 95
以兆字节显示进程内存和进程路径。
ps aux | awk '{print $6/1024 " MB\t\t" $11}' | sort -n
Run Code Online (Sandbox Code Playgroud)
小智 14
只是显示相同症状但仍显示内存耗尽的服务器上的附注。最终找到的是一个 sysctl.conf,来自一个 32 GB RAM 的盒子,并为一个 DB 设置了一个大页面配置为 12000。这个盒子只有 2 GB 的 RAM,所以它把所有可用的 RAM 分配给大页面(仅其中 960 个)。将大页面设置为 10,因为无论如何都没有使用,释放了所有内存。
快速检查 /proc/meminfo 以查找 HugePages_ 设置可能是解决至少一个意外内存占用问题的良好开端。
制作一个show-memory-usage.sh带有内容的脚本:
#!/bin/sh
ps -eo rss,pid,user,command | sort -rn | head -$1 | awk '{ hr[1024**2]="GB"; hr[1024]="MB";
for (x=1024**3; x>=1024; x/=1024) {
if ($1>=x) { printf ("%-6.2f %s ", $1/x, hr[x]); break }
} } { printf ("%-6s %-10s ", $2, $3) }
{ for ( x=4 ; x<=NF ; x++ ) { printf ("%s ",$x) } print ("\n") }
'
Run Code Online (Sandbox Code Playgroud)
使其可执行chmod +x show-memory-usage.sh并像这样调用它./show-memory-usage.sh 10(10 => 最多显示 10 行)
输出示例:
5.54 GB 12783 mysql /usr/sbin/mysqld
1.02 GB 27582 root /usr/local/cpanel/3rdparty/bin/clamd
131.82 MB 1128 company+ /opt/cpanel/ea-php73/root/usr/bin/php /home/companyde/redesign.company.de/bin/magento queue:consumers:start inventory.mass.update --single-thread --max-messages=10000
131.21 MB 1095 company+ /opt/cpanel/ea-php73/root/usr/bin/php /home/companyde/redesign.company.de/bin/magento queue:consumers:start product_action_attribute.update --single-thread --max-messages=10000
131.19 MB 1102 company+ /opt/cpanel/ea-php73/root/usr/bin/php /home/companyde/redesign.company.de/bin/magento queue:consumers:start product_action_attribute.website.update --single-thread --max-messages=10000
130.80 MB 1115 company+ /opt/cpanel/ea-php73/root/usr/bin/php /home/companyde/redesign.company.de/bin/magento queue:consumers:start exportProcessor --single-thread --max-messages=10000
130.69 MB 1134 company+ /opt/cpanel/ea-php73/root/usr/bin/php /home/companyde/redesign.company.de/bin/magento queue:consumers:start inventory.reservations.update --single-thread --max-messages=10000
130.69 MB 1131 company+ /opt/cpanel/ea-php73/root/usr/bin/php /home/companyde/redesign.company.de/bin/magento queue:consumers:start inventory.reservations.cleanup --single-thread --max-messages=10000
130.69 MB 1107 company+ /opt/cpanel/ea-php73/root/usr/bin/php /home/companyde/redesign.company.de/bin/magento queue:consumers:start codegeneratorProcessor --single-thread --max-messages=10000
130.58 MB 1120 company+ /opt/cpanel/ea-php73/root/usr/bin/php /home/companyde/redesign.company.de/bin/magento queue:consumers:start inventory.source.items.cleanup --single-thread --max-messages=10000
Run Code Online (Sandbox Code Playgroud)
小智 5
就我而言,问题是服务器是vmw_balloon启用了模块的 VMware 虚拟服务器:
$ lsmod | grep vmw_balloon
vmw_balloon 20480 0
vmw_vmci 65536 2 vmw_vsock_vmci_transport,vmw_balloon
Run Code Online (Sandbox Code Playgroud)
跑步:
$ vmware-toolbox-cmd stat balloon
5189 MB
Run Code Online (Sandbox Code Playgroud)
因此,主机实际上回收了大约 5 GB 的内存。因此,尽管“正式”为我的 VM 提供了 8 GB,但实际上它要少得多:
$ free
total used free shared buff/cache available
Mem: 8174716 5609592 53200 27480 2511924 2458432
Swap: 8386556 6740 8379816
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
370925 次 |
| 最近记录: |