【MySQL】记一次MySQL内存利用率高的问题解决
改完之后,重启MySQL,内存利用率降低到20%左
Linux 进程通过 C 标准库中的内存分配函数 malloc 向系统申请内存,但是到真正与内核交互之间,其实还隔了一层,即内存分配管理器(memory allocator)。常见的内存分配器包括:ptmalloc(Glibc)、tcmalloc(Google)、jemalloc(FreeBSD)。MySQL 默认使用的是 glibc 的 ptmalloc 作为内存分配器。
内存分配器采用的是内存池的管理方式,处在用户程序层和内核层之间,它响应用户的分配请求,向 *** 作系统申请内存,然后将其返回给用户程序。
为了保持高效的分配,分配器通常会预先向 *** 作系统申请一块内存,当用户程序申请和释放内存的时候,分配器会将这些内存管理起来,并通过一些算法策略来判断是否将其返回给 *** 作系统。这样做的最大好处就是可以避免用户程序频繁的调用系统来进行内存分配,使用户程序在内存使用上更加高效快捷。
关于 ptmalloc 的内存分配原理,个人也不是非常了解,这里就不班门弄斧了,有兴趣的同学可以去看下华庭的《glibc 内存管理 ptmalloc 源代码分析》【文末链接】。
关于如何选择这三种内存分配器,网上资料大多都是推荐摒弃 glibc 原生的 ptmalloc,而改用 jemalloc 或者 tcmalloc 作为默认分配器。因为 ptmalloc 的主要问题其实是内存浪费、内存碎片、以及加锁导致的性能问题,而 jemalloc 与 tcmalloc 对于内存碎片、多线程处理优化的更好。
目前 jemalloc 应用于 Firefox、FaceBook 等,并且是 MariaDB、Redis、Tengine 默认推荐的内存分配器,而 tcmalloc 则应用于 WebKit、Chrome 等。
内存使用率多少正常,这个需要具体问题具体分析,现在就拿Win7系统来说吧,如果使用是2G内存的情况下,开机基本就能达到50%以上了,随便运行点程序必然就已经达到80%了,这是很正常的事情。
如果指针没有达到100%,而且基本上平时打开的程序也就这么多的情况下,80%问题其实也不大,但是如果在运行什么大程序,或者你想玩大型3D游戏的话,2G肯定不够用,建议升级到64位系统使用4G或者更大的内存比较好。
如果想不升级内存的情况下改善情况几乎是不可能的,Win7系统本身和驱动程序就占用了将近1GB的内存了。
Windows中的内存不足如果在运行Windows应用程序时,出现“内存不足”的故障,可按下列方法进行检查和处理:
1、首先应检查Windows的资源使用情况,如果资源占用较多,可用资源较少,打开新文件时会出现“内存不足"的问题。这时可以清理屏幕,减少窗口的数目,
关闭不用的应用程序,包括TSR内存驻留程序,将Windows应用程序最小化为图标,如果问题只是在运行一特殊的应用程序时出现,则与应用软件销售商联系,可能是数据对象的管理不好所致
2、如果问题没有解决,清除或保存Clipboard(剪贴板)的内容,使用ControlPanelDesktop选项将墙纸(Wallpaper)设置为None
3、如问题仍存在,可用PIF编辑器编辑PIF文件,增大PIF文件中定义的MemoryRequirements:KBRequired的值在标准模式下,选择PreventProgramSwitch,
该开关选项打开后,退出应用程序返回Windows如果是386增强模式,则要将DisplayUsage设置成FullScreen(全屏幕方式),将Execution设置为Exclusive,将Videomemory设置为尽可能低的方式
4、如果问题仍存在,则重新开机进入Windows系统,并且确保在“启动"图标中没有其它无关的应用软件同时启动运行,在WIN.INI文件中也没有Run或Load命令加载的任何无关的应用程序。
在平时,出现“内存不足"的问题一般可以按以下办法处理。
首先,退出那些不需要运行的应用程序,然后,再检查系统的可用资源为多少。
如果可用资源大于30%,一般可以运行新的程序。
当有多个应用程序在系统中运行时,可以退出一个,检查一次可用资源,如果某个应用程序在退出前后,可用资源的百分比没有变化,说明这个应用程序没有释放它所占用的资源。
如果要收回这些没有释放的资源,只能退出Windows后,再重新进入Windows。
为了确保在启动进入Windows时系统的可用资源足够,在“启动"图标中应该没有无关的应用软件同时启动运行,在WIN.INI文件中也没有由Run或Load命令加载的任何无关的应用程序,因为这些同时启动的无关应用程序可能已经占用了很多资源,使得要使用的应用程序无法运行。
一般说来,经过这样处理,就不会出现“内存不足"的问题了。
扩展资料:
内存使用率太高原因:
一、内存太小,内存里面实在放不下太多数据,例如128M内存跑XP。
二、有大量常驻内存程序(STR Programs)以及自动加载的服务,很多人一开机,什么QQ、MSN、BT、eMule、迅雷……开启大量程序,这些程序和服务会占用相当部分的内存空间,导致大量数据需要写入到页面文件,而导致PF占用过高。
解决方法:
如果计算机运行接近最大限度,可以增大页面文件的大小。
CPU使用率与PF使用率就相当于电脑的CPU配置及内存条大小与系统性能的正比关系咯。CPU使用率太高说明了系统开销太大(XP sp2)或者CPU已经OUT了需要换咯;
内存及虚拟内存的硬盘就是PF,“PF使用率开机就太高”有可能是开机随系统启动的程序太多太大,同时内存太小咯,又或者系统设置得不好...
参考资料:百度百科-PF(内存使用率)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)