现在问题是 一套相同的程序连接 A 高峰跑起来时,机器A的内存占用 时 33%, 而程序连接到机器B的PG上,高峰时 内存占用确达到 88%,两台机器的CPU占用水平倒是一样的,。
两条机器的 CPU规格时一样的。
那套程序 跑的数据,跑的数据都是一样的,都是往pg里面 多个表 insert/update/delete 数据,大部分情况时 insert 数据。高峰时 数据库连接有 110个。
我的疑问时 为什么 A 内存只占了 33% ,而B都占了 88%?到底时 A 不正常 还是 B不正常。
A 不正常是否意味着 内存没有有效利用起来,需要调高 share_buffer?
内存占用是用TOP工具统计的
机器都在阿里云上
ECS A : 8核64G
B : 8核 32G
上面的TOP截图 时 机器A 上 的截图
内存的消耗量上 机器A 是占用 21g,机器B是 28G
关于 插入的数据量 ,都是同一套程序, 提交的数据也都是同一套.
机器A和 机器B 的初始数据都是一样的.
都是独占的.连接的程序,业务量都是相同的数据去挨个测得的。现在机器B 是只要开起来,随便跑一下,内存就到了 80%多,不过就稳定在这里,不会超过 90%。机器A是稳定在 33%左右。
我正在看两台机器得pg_top. 感觉看不出来差异得原因在哪里。
机器B 上现在没有跑数,只是空跑(测试程序 去跑机器A得了),机器B还是内存还是 27G(86%,从 top 上看得。pg_top没有这项显示).
而机器A 上面现在有100多连接在并发,但 内存也却没那么高(21G从 top 上看得。pg_top没有这项显示)。
机器A pg_top
机器B pg_top
机器B看来是操作系统缓存的问题了。
pg 停掉 系统内存使用占比 从 82% 降到 55%,PG应该使用了27%。
然后再重启linux, 内存占比 从 55% 讲到 3.1%。
然后再启动 pg,内存占比从 3.1% 到 4%。
重启大法 , 以后内存分析 smem还是很管用的 可以分析系统占用内存 具体某个进程占用内存的情况等等;
2年前也遇到过类似问题 那时是java程序占用内存特别高,后来也是重启centos系统解决掉的,也许是云服务商的虚拟化技术的问题。
smem 的确是查询系统内存使用情况的利器!
问题答疑来自云栖社区-技术进阶[钉钉群],喜爱PostgresSQL的同学扫码进群
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。