只需一步,快速开始
shmpages应该合理配置,barrier和limit应小于等于vmguarpages的barrier。用户可以通过在/dev/shm下建立文件的方式占用内存,而这样占用的内存在母机缺少内存时无法强制释放(母机只能通过杀进程的方式释放内存)。 假定一个极端情况:shmpages被设置为无限大,某用户恶意在/dev/shm下建立一个大小接近privvmpages的barrier的文件(也就是占满busrtable memory),这时母机缺内存了,恰好只有这一个VE使用了burstable memory,于是母机杀掉了这个VE的所有进程——但是该VE却始终占据着巨大的内存(共享内存随着开辟它的进程的结束而消失,但恶意建立文件开辟的共享内存却没有进程约束它,于是除非关掉这个VE或主动去删文件,否则永远无法释放),这时OpenVZ的调整机制失效,Linux内核只能通过随机杀进程的方式释放内存,不管这个进程所属的VE是否用了burstable memory。 如果shmpages的barrier和limit小于等于vmguarpages的barrier,那么最极端的情况也就是该VE进程被杀光却仍然占用了全部的guaranteed memory。
用于web服务器的VPS中最常见的使用共享内存设备的东西是MySQL,到底会用多少我也不清楚。我有几个5~6M大的数据库,shmpages的held值是4736(也就是占用4726×4k=18.5M内存)。如果服务商设定的shmpages过小的话,大一点的MySQL数据库会跑不起来。所以这个值很容易成为除了numproc、numtcpsock、tcpsndbuf、tcprcvbuf、numfile之外另一个玩阴招的地方。 在查/dev/shm的相关内容的过程中,我发现有一篇《检测openvz vps内存是否超售的方法》,需要指出的是,只要服务商配置合理,这个方法是不能检查OpenVZ VPS内存是否超售的,原因如上所述,VE中能开辟的共享内存受shmpages的限制,不能完全占满burstable memory。而且如果文中叙述是真实的,那么Burst对OpenVZ的配置无疑是存在问题的。
查看全部评分
举报
原帖由 hotsnow 于 2010-12-12 15:30 发表 如何查看 shmpages 参数?
本版积分规则 发表回复 回帖后跳转到最后一页
Archiver|手机版|小黑屋|全球主机交流论坛
GMT+8, 2025-11-10 11:24 , Processed in 0.149219 second(s), 13 queries , Gzip On, MemCache On.
Powered by Discuz! X3.4
© 2001-2023 Discuz! Team.