精华内容
下载资源
问答
  • 最近有部分用户会问,为什么我的tomcat占用的...其实减少tomcat的内存使用量比较难,但是我们还是有一些办法的! 要想减少tomcat内存使用量,就必须对tomcat和内存的原理和关系进行了解! [tomcat和内存的原理] ...

    最近有部分用户会问,为什么我的tomcat占用的内存这么高?如何才能把他减少点呢?

     

    其实减少tomcat的内存使用量比较难,但是我们还是有一些办法的!

     

    要想减少tomcat内存使用量,就必须对tomcat和内存的原理和关系进行了解!

     

    [tomcat和内存的原理]

     

    Tomcat是运行在内存之上的,几乎所有的软件的运行都会占用内存,比如您运行个QQ软件,他也占用内存,这个是物理规律,不需要我在多说什么,

     

    我们会在每个人的tomcat上做好设置,允许他最大可使用多少内存,如果超出了,tomcat就不能在继续运行,就会出现假死,网站打开比较慢,网站打不开的情况!

     

     

    [是什么在消耗tomcat内存]

     

    Tomcat运行在内存上的,tomcat里每增加一点东西(或者说每运行一个网页),他都会占用相应的内存,比如我上传了一个图片,在浏览器里面访问他,tomcat要让这个图片显示,他会占用内存!!一个网页也是这样,比如您上传了一个jsp网页,他运行这个jsp网页的时候,他会占用一定的内存!!

    上面都还是静态的比较好理解,我在说的动态的

    比如一个jsp网页他显示数据库里面的10条记录,和显示1w条记录,他所消耗的内存是不一样的,有时候用户会问,为什么我的访问量也不多大,为什么会怎么占用内存呢,这个就和您的访问量,图片的大小,数据库表里面数据记录的多少,放了多少个工程有关系了,访问量只是影响内存的一个可能,还有很多影响内存的选项,我们需要综合考虑!

     

     

    [tomcat和内存的其他需要注意的情况]

     

    有的用户说,我现在用了250M内存,我升级到你们企业A,企业A的是300M内存,这样内存就够用了吧!! 答案并不是肯定的,因为您的tomcat24小时内是连续运行的,需要考虑他连续对内存占用的情况,tomcat连续运行的时候,您的tomcat占用的内存也会连续的升高,至于升多高,这个不好预测,这个和您的访问量,图片的大小,数据库的记录多少,有直接关系,比如一个jsp网页他调用数据库里面的100条记录,和调用1w条记录,他所消耗的内存肯定是不一样的

     

     

    [如何减少tomcat内存]

     

    减少内存比较困难,我只能从我经验出发给大家做一些参考,可能不全面如果有更好的方法,欢迎在下面留言:

    1:减少不必要的工程或者项目,我们就遇到过个用户,他内存不够用了,我们发现他webapps下放了很多工程,他说他没访问,应该不影响,其实这个是错误的,tomcat是不知道你要不要访问的,tomcat会在启动的时候把所有的工程或者项目都一股脑的加载进去,所以即使您不访问他他也会加载,如果没必要或者不打算使用他请删除他,不要放在服务器上

     

    2:尽量减少使用框架,开源软件等,框架和开源软件用起来是比较方便,但是他们加载了大量的jar文件,尤其是在tomcat的时候,都一起加载到tomcat内存里面,而且还不释放,比如我们有框架,可能只是用了这个框架中的20%的功能,还有80%我们用不到,但是框架也一样会把这80%加载到内存里面,造成我们的内存白白的浪费 [网站一旦成型在修改框架可能不现实,我只是列出来告诉大家有条件的话可以修改]

     

    3:尽量减少对数据库的操作,操作数据库是极大的耗费内存的操作,尤其是多表联合查询,或者表数据比较大的时候,比如从几百万条数据里面检索需要的数据的时候,那占用内存是直线上升的如果您的数据表比较大,请考虑压缩他到合理的范围内!比如把一个大表分为多个小表等

     

    4:减少对文件的操作,读写文件也是比较占用内存的频繁的操作一些文件,会造成内存的上升,如果在加以比较多的访问量,这个内存消耗也是比较厉害的,尤其是一些文件索引,还有日志文件,一般我们不建议用户使用文件索引,一旦使用内存很快就用完了,还不好排查什么地方出了问题,另外可以减少对日志的记录,有的时候程序出问题,日志记录的就比较多,一个日志文件就是几百G,别说读写,就是打开这个文件,都需要很耗费内存的,要知道jsp对文件的读写都是在内存里操作的,所以大文件他占用的内存更是直线上升的,请减少对文件的操作!

     

    5:图片的大小,多少也会占用内存,尤其是一些大图片,如果有条件的,可以把图片整理下!!把不需要的删除,把大图压缩后在上传!!

     

    6:要养成良好的代码书写规范,尽量少在代码里申请变量要知道您在代码里申请了String aa=  “”的砍死简单的内存在访问量大的情况下,也消耗内存比较厉害的,另外还有就是在申请完数据库连接的时候,记得释放这个数据库连接,要不然就会出现内存泄漏的问题...

     

     

    7:尽量生成htm静态网页尽量大家把主页或者访问量比较大的网页,想办法生成htm的静态网页,这样可以有效的减少内存,增加稳定性,您看我们的主页(www.jspkongjian.net)全是htm静态网页,包括新闻这些东西,那是由于我们自己把主页生成了htm,目的就是减少内存,增加稳定性,我在这里把我们自己生成htm的代码给出来,大家如果想也生成htm,可以自己研究下 http://www.jspkongjian.net/news.jsp?id=396(生成htm网页教程)


    转载于:https://my.oschina.net/liangzhenghui/blog/598450

    展开全文
  • Python 导数据的时候,需要在一个大表上读取很大的结果集。...使用 SSCursor (流式游标),避免客户端占用大量内存。(这个 cursor 实际上没有缓存下来任何数据,它不会读取所有所有到内存中,它的做法是从储存块中读...

    Python 导数据的时候,需要在一个大表上读取很大的结果集。
    如果用传统的 fetchall() 或 fetchone() 方法,都是先默认在内存里缓存下所有行然后再处理,大量的数据会导致内存资源消耗光,内存容易溢出。

    解决的方法:

    1. 使用 SSCursor (流式游标),避免客户端占用大量内存。(这个 cursor 实际上没有缓存下来任何数据,它不会读取所有所有到内存中,它的做法是从储存块中读取记录,并且一条一条返回给你。)
    2. 使用迭代器而不用 fetchall ,即省内存又能很快拿到数据。
    import pymysql
    
    dbmy = pymysql.connect("ip","user","pass","date",cursorclass = pymysql.cursors.SSCursor)
    
    cursor = dbmy.cursor()
    
    sql = "select * from table"
    
    relnum = cursor.execute(sql)
    
    result = cursor.fetchone()
    
    while result is not None:
    
        do something...
    
        result = cursor.fetchone()
    
    cursor.close()
    dbmy.close()
    

    需要注意的是

    1. 因为 SSCursor 是没有缓存的游标,结果集只要没取完,这个 conn 是不能再处理别的 sql,包括另外生成一个 cursor 也不行的。如果需要干别的,请另外再生成一个连接对象。
    2. 每次读取后处理数据要快,不能超过 60 s,否则 mysql 将会断开这次连接,也可以修改 SET NET_WRITE_TIMEOUT = xx 来增加超时间隔。

    参考文档:http://mysql-python.sourceforge.net/MySQLdb.html#

    展开全文
  • 最近买个腾讯云服务器,不久之后使用数据库就非正常的卡,使用xshell连接使用命令也非常卡,看了下内存使用量发现kswapd0进程占了太多内存,而且swap竟然是0,关机重启不能解决问题,只能手动添加swap交换分区了。...

    最近买个腾讯云服务器,不久之后使用数据库就非正常的卡,使用xshell连接使用命令也非常卡,看了下内存使用量发现kswapd0进程占了太多内存,而且swap竟然是0,关机重启不能解决问题,只能手动添加swap交换分区了。使用的是买的默认的服务器

    调整swap好像并不能解决kswapd0进程占用大量内存的问题,还要研究下
    调整linux内核尽量用内存,而不用swap

    终于找到怎么解决这个问题了,腾讯云总报异常登录,还说有木马文件,并没有太当回事,可是top查看内存一直时接近100%,自己部署的应用用不了,只能先解决下问题了
    清除病毒做法:

    https://blog.csdn.net/qq_32731747/article/details/81558561?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-4

    解决swap占用太多做法:https://blog.csdn.net/m0_37886429/article/details/78487324?locationNum=10&fps=1

    密码不管自己设置的多复杂都能暴力破解,用密钥安全点:
    https://www.runoob.com/w3cnote/set-ssh-login-key.html

    [root@VM_0_3_centos etc]# cat /etc/redhat-release 
    CentOS Linux release 7.6.1810 (Core) 
    

    在这里插入图片描述

    1. 首先查看已挂载的分区信息
      df -T 只可以查看已经挂载的分区和文件系统类型。
      fdisk -l 可以显示出所有挂载和未挂载的分区,但不显示文件系统类型。
      parted -l 可以查看未挂载的文件系统类型,以及哪些分区尚未格式化。
      lsblk -f 也可以查看未挂载的文件系统类型。
    [root@VM_0_3_centos dev]# df -T 
    Filesystem     Type     1K-blocks    Used Available Use% Mounted on
    devtmpfs       devtmpfs    930108       0    930108   0% /dev
    tmpfs          tmpfs       941028      28    941000   1% /dev/shm
    tmpfs          tmpfs       941028     672    940356   1% /run
    tmpfs          tmpfs       941028       0    941028   0% /sys/fs/cgroup
    /dev/vda1      ext4      51473868 6097968  43178656  13% /
    tmpfs          tmpfs       188208       0    188208   0% /run/user/1001
    tmpfs          tmpfs       188208       0    188208   0% /run/user/1000
    tmpfs          tmpfs       188208       0    188208   0% /run/user/0
    

    可以看到/dev/vda1 是我们使用的硬盘,文件系统类型是ext4
    2. 使用dd命令创建/home/swap这么一个分区文件。文件的大小是512000个block,一般情况下1个block为1K,所以这里空间是512M。

    [root@VM_0_3_centos ~]# dd if=/dev/zero of=/home/swap bs=1024 count=512000
    512000+0 records in
    512000+0 records out
    524288000 bytes (524 MB) copied, 2.6457 s, 198 MB/s
    
    1. 接着再把这个分区变成swap分区
    [root@VM_0_3_centos ~]# /sbin/mkswap /home/swap
    Setting up swapspace version 1, size = 511996 KiB
    no label, UUID=50c11182-d99b-40c5-87d6-0b33fe6da9f4
    
    1. 再接着使用这个swap分区。使其成为有效状态
    [root@VM_0_3_centos ~]# /sbin/swapon /home/swap
    swapon: /home/swap: insecure permissions 0644, 0600 suggested.
    [root@VM_0_3_centos ~]# free -m
    total        used        free      shared  buff/cache   available
    Mem:           1837         362         598           0         877        1306
    Swap:           499           0         499
    
    1. 修改文件使它永久生效
    [root@VM_0_3_centos ~]# echo "/home/swap   swap  swap  defaults 0 0">> /etc/fstab
    

    不放心可以cat下文件,完成

    展开全文
  • 题目要求:使用shell脚本监控检查系统某进程内存使用量 分析: 在对应用服务进行维护时,也经常遇到由于内存使用过大导致进程崩溃,造成业务中断的情况。例如:32 位程序可寻址的最大内存空间为 4G,如果超出将...

    题目要求:使用shell脚本监控检查系统某进程内存使用量

    分析:

    在对应用服务进行维护时,也经常遇到由于内存使用过大导致进程崩溃,造成业务中断的情况。例如:32 位程序可寻址的最大内存空间为 4G,如果超出将申请内存失败,同时物理内存也是有限的。内存使用过高可能由于内存泄露,消息堆积等情况。通过脚本对业务进程内存使用量进行时时监控,可以在内存使用量异常时及时发送告警,便于维护人员及时处理。
    我们可以通过指定进程pid获得此进程内存使用量,如果此进程内存使用量超过 1.6G(可以根据实际情况进行调整),则输出告警,否则输出正常信息。

    解答:

    命令行测试:
    [root@myhost~]# ps -ef | egrep tomcat | egrep root |  egrep -v "grep|vi|tail" | sed -n 1p | awk '{print $2}'
    18430
    [root@myhost~]# ps -p 18430 -o vsz
       VSZ
    14896208
    [root@myhost~]# ps -p 18430 -o vsz | egrep -v VSZ
    14896208
    
    
    脚本:
    #!/bin/sh
    source /etc/profile
    
    #define variable
    
    psUser=$1
    psProcess=$2
    pid= `ps -ef | egrep ${psProcess} | egrep ${psUser} |  egrep -v "grep|vi|tail" | sed -n 1p | awk '{print $2}'`
    echo ${pid}
    if [ -z ${pid} ];then
    	echo "The process does not exist."
    	exit 1
    fi   
    
    MemUsage=`ps -p ${pid} -o vsz |egrep -v VSZ` 
     (( ${MemUsage} /= 1000)) 
    echo ${MemUsage} 
    
    if [ ${MemUsage} -ge 1600 ];
    	then
    		echo “The usage of memory is larger than 1.6G”
    	else
    	 	echo “The usage of memory is ok”
    fi
    
    

    情景拓展:Centos内存占满或使用率过高处理方法

    概述:

    经常会遇到CentOS用着用着变慢了,free -m查看内存使用情况,发现内存跑满了或过高

    [root@myhost ~]# free -m
                 total       used       free     shared    buffers     cached
    Mem:         16081        882      15198          0        122        510
    -/+ buffers/cache:        249      15831
    Swap:            0          0          0
    

    分析:

    输入top,再按shift+m,按内存占用百分比排序,发现应用也没占多少内存,那是什麽占用的呢?其实是CentOS为了提高效率,把部分使用过的文件缓存到了内存里。这样的话如果不需要这样的文件性能,可以直接释放来缓解内存压力。

    [root@myhost ~]# top
    top - 14:54:15 up 2 days, 19:22,  1 user,  load average: 0.00, 0.00, 0.00
    Tasks: 128 total,   1 running, 127 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:  16467076k total,   904060k used, 15563016k free,   125576k buffers
    Swap:        0k total,        0k used,        0k free,   522472k cached
    
      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
     2568 grafana   20   0 1142m  55m  15m S  0.0  0.3   1:05.35 grafana-server     
      785 root      20   0 1392m  30m 7604 S  0.3  0.2   9:25.89 CmsGoAgent.linu    
     1249 root      10 -10  120m  11m 9180 S  0.0  0.1   7:30.05 AliYunDun          
     1557 root      20   0 81756 4844 2236 S  0.0  0.0   0:28.22 aliyun-service     
     1242 root      20   0 31960 4456 2808 S  0.0  0.0   0:49.32 AliYunDunUpdate    
     4751 root      20   0  100m 4452 3432 S  0.0  0.0   0:00.02 sshd               
     1542 postfix   20   0 81204 3516 2628 S  0.0  0.0   0:00.11 qmgr    
     .
     .
     .
     .
    

    解决:

    [root@myhost ~]# sync
    [root@myhost ~]# echo 3 > /proc/sys/vm/drop_caches
    [root@myhost ~]# free -m
                 total       used       free     shared    buffers     cached
    Mem:         16081        265      15816          0          1         40
    -/+ buffers/cache:        223      15857
    Swap:            0          0          0
    
    
    展开全文
  • # -*- coding: utf-8 -*- '''Chinese comments are used below, need to be added''' # Author: xiaolong.shi # Email: xiaolong@zamplus.com import GeoCode class AddGeocode(object): def __init__(self)...
  • 普通的操作无论是fetchall()还是fetchone()都是先将数据载入到本地再进行计算,大量的数据会导致内存资源消耗光。解决办法是使用SSCurosr光标来处理。 3.优化后的代码  import MySQLdb . cursors...
  • 我试图在python 2.7.3中使用BeautifulSoup4处理几个网页但是在每次解析之后内存使用量都会上升.此简化代码产生相同的行为:from bs4 import BeautifulSoupdef parse():f = open("index.html", "r")page = ...
  • windows2008内存使用问题

    千次阅读 2018-12-28 11:39:01
    最近一段时间发现业务的一台机器windos2008的可使用内存持续降低,今天已经降低到2G。计算了跑着的进程的内存和,发现与实际不符(不知道那剩余的4G跑哪去了)后来使用了RAMMap v1.51进行分析内存,下载地址,请点击...
  • 今天来公司发现hadoop集群出现了HDFS DataNode堆内存使用率超过阈值的告警,然后查看集群各个节点的状态发现有一个数据节点宕机了,经过一上午的处理我来聊聊解决的几个方法: 目录: 1、将HDFS备份数降低 2、删除...
  • 在用Image.open获取jpg图片rgb值的时候占用大量内存,进而导致崩溃。gc.collect()是后来添加的解决方案,但是用处不大。各位大佬帮忙看下我代码哪里有问题嘛,谢谢啦 ``` segments_lst = [] lst = sorted(glob....
  • 内存使用率过排查步骤

    千次阅读 2019-05-21 09:42:56
    1.先查看服务器剩余内存容量 free -h ​​ 2.查看占用内存最大的10个进程: ps -aux | sort -k4nr | head -n 10 ​​ 3.查看内存占用最高的pid的线程: top -Hp <pid> ​​ 4.记录首个pid,转化成16...
  • 频繁读写文件导致内存使用率过

    千次阅读 2018-10-09 16:44:49
    最近接到一个客户反馈,说是服务器内存使用,总内存16G,使用top命令查看可用内存已经不足1G了。 客户环境服务器为linux,部署了3个tomcat,每个tomcat均有大量的日志产生。 让客户使用free -m检查一下 ...
  • 我这里知道这个消息是通过bearychart报警消息获得的,报警的信息是,当前服务器内存使用值已经达到了百分之九十二 由于该机器我无法从外网连接,所以周六来公司看了下情况,通过htop命令看到是MongoDB在大量吃内存,物理...
  • 通过侦测脚本的内存使用情况,有利于代码的优化。...脚本执行时所使用的内存量,有升有跌。...如果需要获得任意时间点的最高内存使用量,则可以使用 memory_limit() 函数。view sourceprint?01 echo "Initial: 代...
  • 时光 TDLight是tdlib的分支,专注于内存占用空间和性能。 如果您不使用sqlite数据库,则TDLight与tdlib 100%兼容。 :warning: 内存清理几乎删除...谨慎使用TDLight不会随时间增加内存使用量。 在“修改的功能”段落
  • 最近接到一个客户反馈,说是服务器内存使用,总内存16G,使用top命令查看可用内存已经不足1G了。 客户环境服务器为linux,部署了3个tomcat,每个tomcat均有大量的日志产生。 让客户使用free -m检查一下 ...
  • 设置不正确 重新设置BIOS2、灰尘过多 清理机箱保持内部干燥干净3、msconfig下关闭不必要的程序CPU或内存配置低 (更换CPU添加内存)4、硬盘存在逻辑或物理坏道 (找专业人士检修或更换)5、CPU温度过 更换大功率...
  • 背景windows服务器访问外部某个ip +端口 不通...2、netstat 连接比较多3、服务器暂时不提供服务,重启服务器,问题解决4、后续观察服务器内存使用,内存扩容或检查应用代码问题 转载于:https://blog.51cto.com/1185...
  • 使用UITableView和UICollectionView展示图片列表时,运营人员上传的图片分辨率过,导致应用内存占用率爆表引起应用崩溃问题。 解决方法 在加载图片的方法中加入options: SDWebImageOptions.scaleDownLargeImages...
  • 如何修复macOS上的Microsoft EdgeCPU和内存使用情况呢?不用担心,接下来小编给大家详细介绍一下产生这种情况的具体原因和解决方法,需要的朋友欢迎参考操作! 具体原因 您的Microsoft Edge实例消耗大量CPU资源有...
  • 然而,在我们的ProductionServers上,我发现使用内存量有点太了,所以我深入研究代码,以了解是否至少可以进行一些改进。在调试时,我没有得到预期的结果,所以我创建了一个小的testscript,这让我很困惑。我希望有人...
  • 如何修复macOS上的Microsoft EdgeCPU和内存使用情况呢?不用担心,接下来小编给大家详细介绍一下产生这种情况的具体原因和解决方法,需要的朋友欢迎参考操作! 具体原因 您的Microsoft Edge实例消耗大量CPU资源有...
  • 首先说明下redis的虚拟内存与操作系统的虚拟内存不是一码事,但是思路和目的都是相同的。...另外的能够提高数据库容量的办法就是使用虚拟内存把那些不经常访问的数据交换的磁盘上。如果我们的存储的数
  • 我们的服务器内存占用异常的,仅仅只是启动项目就占用了大量内存,后来发现是因为我们的每个项目都引用了一个公共的pojo类项目,这个项目包含了所有项目跟数据库对应的pojo类,原来是因为改动pojo类时每个项目要...
  • 我一直在尝试使用iterparse来减少需要处理大型XML文档的脚本的内存占用量.这是一个例子.我编写了这个简单的脚本来读取TMX文件并将其拆分为一个或多个输出文件,不超过...为什么内存使用量如此之?#! /usr/bin/pytho...
  • 图灵学院 java架构师必备技能-使用spring Cloud开发时开发内存占用过如何解决 SpringCloud开发中经常会出现一个非常严重的资源问题,就是内存占用过,但是实际上,本机开发测试并没有很大的请求,因此这是对...
  • 内存颗粒编号与内存品牌知识介绍通过查验内存颗粒的型号,我们就可以计算出内存的容量三星内存颗粒目前使用三星的内存颗粒来生产内存条的厂家非常多,在市场上有很的占有率。由于其产品线庞大,所以三星内存颗粒的...
  • 而且往往还有一点被很多小白所忽略,那就是内存颗粒类型,这不光决定内存质量,还极有可能决定着未来内存使用时体验。那就让我们来看看,现在内存上的颗粒有哪些吧。要提前说明一点,如今的内存厂商,除了三大厂以外...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,245
精华内容 3,298
关键字:

内存使用量高