近日,我们开发发现有一台配置相同的服务器跑的特别慢,相同数据量的情况下,其他服务器只要跑10分钟,这台服务器要跑50分钟,经确认,所有的应用层配置参数都相同。上去之后,发现该服务器swap使用比较多,大概有8-10G左右(配置了32G,1:1),该服务器上的应用进程内存使用量(PSS)和其他服务器差不多,不存在特别多的情况。为了尽可能不使用交换区,将vm.swappiness设置为0了,重跑,发现运行一段时间之后,cached和free都没有了,swap又上去了,但是rss占用一直在十几个G(pss大约30G),和其他服务器没有太大的差别,按说不应该这么快就需要大量的交换区。查看sar -B,发现在运行缓慢的这段时间,有大量的majflt,如下:

对应这段时间的iowait也很高

但是有一个不匹配的奇怪现象,就是commit只有30%(commit是指为了保证不内存溢出,需要的物理内存总量),如下:

最后,将swap关掉,今天再观察情况。

注:swap本身并没有问题,使用swap的目的是为了应对突然高峰期时有应用内存剧增导致OOM,但是长时间的swap交换严重就会导致应用性能极端低下。如果这种情况不可避免,短时间内又无法扩充内存(不过现在的服务器,一般都可以最多插64根内存,目前单根主流为16GB(最大可达128GB单根,http://www.sohu.com/a/208300643_100034486),可以达到1TB内存),可以考虑将swap建在最快的磁盘上,尽可能的提高性能。

Linux 查看内存的插槽数,已经使用多少插槽.每条内存多大

dmidecode|grep -A5 "Memory Device"|grep Size|grep -v Range

linux交换区使用过多导致的性能问题的更多相关文章

  1. Linux下php-fpm进程过多导致内存耗尽问题

    这篇文章主要介绍了解决Linux下php-fpm进程过多导致内存耗尽问题,需要的朋友可以参考下   最近,发现个人博客的Linux服务器,数据库服务经常挂掉,导致需要重启,才能正常访问,极其恶心,于是 ...

  2. mkswap - 建立一个linux交换区

    总览 mkswap [-c] [-vN] [-f] device [size] 描述 mkswap 在一个设备上或者在一个文件里创建一个linux交换区. (该交换区创建后,必须使用 swapon 命 ...

  3. SetProcessWorkingSetSize() 方法使内存降低了很多(把内存放到交换区,其实会降低性能)——打开后长时间不使用软件,会有很长时间的加载过程,原来是这个!

    在项目中对程序性能优化时,发现用SetProcessWorkingSetSize() 方法使内存降低了很多,于是查阅了相关的资料如下: 我的程序为什么能够将占用的内存移至虚拟内存呢? 其实,你也可以, ...

  4. Linux交换分区使用过多的处理办法

    处理办法 echo "vm.swappiness=0" >>/etc/sysctl.conf sysctl -p swapoff -a && swapo ...

  5. VMware 虚拟机Red Hat 5.9 交换区及硬盘空间调整

    首先要通过VMware设置简单实现内存扩大.但是系统中的/swap应该如何设置呢? 1. 创建swap 文件 使用如下命令: #dd if=/dev/zero of=/swap/swapfile bs ...

  6. 揭开Linux操作系统的Swap交换区之谜

    揭开Linux操作系统的Swap交换区之谜 Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要.通过调整Swap ...

  7. Linux查看内存使用量和交换区使用量

    Linux查看内存使用量和交换区使用量 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ free -m total used free shared buffe ...

  8. 转载:Linux服务器Cache占用过多内存导致系统内存不足最终java应用程序崩溃解决方案

    原文链接: https://blog.csdn.net/u014740338/article/details/66975550 问题描述 Linux内存使用量超过阈值,使得Java应用程序无可用内存, ...

  9. Linux设置虚拟内存-创建和启用Swap交换区

    如果你的服务器的总是报告内存不足,并且时常因为内存不足而引发服务被强制kill的话,在不增加物理内存的情况下,启用swap交换区作为虚拟内存是一个不错的选择,如果是SSD硬盘,正常读写速度都在300M ...

随机推荐

  1. 24-Python3 OS

    24-Python3 OS ''' OS文件/目录方法 ''' ##os.access():检验权限模式 fo1 = open('/Users/ligaijiang/PycharmProjects/f ...

  2. [LeetCode] 868. Binary Gap_Easy

    Given a positive integer N, find and return the longest distance between two consecutive 1's in the ...

  3. 自定django登录跳转限制

    django自定义一个登录跳转限制: 解释: 不登录不让跳转到其它页面. 原理: 做一个装饰器,在访问路由时,先进行判断,登录session是否存在,如果存在则跳转,不存在则返回到登录页面.或者你可以 ...

  4. UGUI实现摇杆

    效果图

  5. linux 小笔记

    //强杀pid2306的进程 kill -9 2306 //查看80端口占用情况 lsof -i :80 //杀死mysql的所有进程 sudo killall mysqld //关闭占用80端口的所 ...

  6. can not create symbolic link HDFS解压自动配置lib报错。

    如题,使用FusionInsight解压生成样例代码的时候报错,找不到解释.只猜测是权限问题.然后并没有仔细静心思考,心里杂念很多,很浮躁. 解决方法是“以管理员身份运行“. 想想高中:面对问题,不能 ...

  7. 大话设计模式C++ 备忘录模式

    备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将对象恢复到原先保存的状态. 角色: (1)Originator(发起人):创建盒子, ...

  8. C#之Action的实际应用例子

    public class DemoAction{ public Action action; public Action<int> action1; public Action<in ...

  9. 【爬虫】biqukan抓取2.0版

    #!python3.7 import requests,sys,time,logging,random from lxml import etree logging.basicConfig(level ...

  10. Hive分区表新增字段及修改表名,列名,列注释,表注释,增加列,调整列顺序,属性名等操作

    一.Hive分区表新增字段 参考博客:https://blog.csdn.net/yeweiouyang/article/details/44851459 二.Hive修改表名,列名,列注释,表注释, ...