做购彩网站是怎么盈利的html5教程电子书
web/
2025/10/5 2:18:33/
文章来源:
做购彩网站是怎么盈利的,html5教程电子书,丁鹿学堂前端培训怎么样,免费的舆情网站app2019独角兽企业重金招聘Python工程师标准 问题描述 Linux内存使用量超过阈值#xff0c;使得Java应用程序无可用内存#xff0c;最终导致程序崩溃。即使在程序没有挂掉时把程序停掉#xff0c;系统内存也不会被释放。 找原因的过程 这个问题已经困扰我好几个月… 2019独角兽企业重金招聘Python工程师标准 问题描述 Linux内存使用量超过阈值使得Java应用程序无可用内存最终导致程序崩溃。即使在程序没有挂掉时把程序停掉系统内存也不会被释放。 找原因的过程 这个问题已经困扰我好几个月了分析过好多次都没有找到原因网上查了一下该问题其他人也都遇到过不过并没有什么好的解决方案因为项目一直没有上线每次当内存不足时导致程序崩溃都是重启服务就好了索性也就没花太多的时间来找问题。现在项目马上上线了不能在出现程序崩溃的情况了况且还是前置系统更不能出现任何问题。 最开始一直认为是程序的原因导致内存泄漏使用jdk自带的jmap -F -dump:live,formatb,file/usr/local/sztFront/logs/heapdump.bin命令输出过几次dump文件通过MemoryAnalyzer分析应用程序没有耗内存过大的变量。后台猜测是否日志输出过多导致的毕竟是前置系统每天的报文量特别大日志能到达5,6个G。所以把日志接收报文关了日志大小马上降下来了每天200M。程序挂掉的时间变长了原来差不多一周就挂掉了现在可以达到两周左右才挂掉还是不行没有冲根本上解决问题。经过在网上搜索各种相关的问题问题出现在Cached的值过大导致系统没有可以再分配的内存空间。Cached只要用来缓存文件的经常读写的文件会被缓存到Cached中可以增加读写效率该功能是Linux系统内核提供的从2.6.16以后的核心版本才提供也就是老版的操作系统如红旗DC 5.0、RHEL 4.x之前的版本都没有。这就可以解释为什么我的项目总挂掉了我的项目主要就是处理文件的所以接收和下载的文件会被缓存起来一直耗着内存不释放即使把程序停掉也不会释放内存。最后找到了三条执行可以清理cached的内存 三条指令 sync echo 1 /proc/sys/vm/drop_caches echo 2 /proc/sys/vm/drop_caches echo 3 /proc/sys/vm/drop_caches 执行完这三条指令后通过free -m命令查看free可用内存马上增多buff/cache列值变小说明内存被释放了但是不能总是手动的执行这三条指令所以最后写了一个shell脚本开启Linux定时任务crond每天早上检查一次free内存当小于4G时执行这三条命令注系统内容20G。 注意在执行这三条命令之前一定要先执行sync命令描述sync 命令运行 sync 子例程。如果必须停止系统则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中包含已修改的 i-Node、已延迟的块 I/O 和读写映射文件 解决方案手动 1. 修改/proc/sys/vm/drop_caches释放Slab占用的cache内存空间参考drop_caches的官方文档 Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free. To free pagecache: * echo 1 /proc/sys/vm/drop_caches To free dentries and inodes: * echo 2 /proc/sys/vm/drop_caches To free pagecache, dentries and inodes: * echo 3 /proc/sys/vm/drop_caches As this is a non-destructive operation, and dirty objects are notfreeable, the user should run sync first in order to make sure allcached objects are freed. This tunable was added in 2.6.16. 注意在执行这三条命令前先执行sync命令 解决方案自动 1、编写shell定时任务脚本freemem.sh #! /bin/sh usedfree -m | awk NR2 | awk {print $3} freefree -m | awk NR2 | awk {print $4} echo /app/memory/logs/mem.log date /app/memory/logs/mem.log echo Memory usage before | [Use${used}MB][Free${free}MB] /app/memory/logs/mem.log if [ $free -le 4000 ] ; then sync echo 1 /proc/sys/vm/drop_caches sync echo 2 /proc/sys/vm/drop_caches sync echo 3 /proc/sys/vm/drop_caches used_okfree -m | awk NR2 | awk {print $3} free_okfree -m | awk NR2 | awk {print $4} echo Memory usage after | [Use${used_ok}MB][Free${free_ok}MB] /app/memory/logs/mem.log echo OK /app/memory/logs/mem.log else echo Not required /app/memory/logs/mem.log fi exit 1 2、使用crontab -e命令编辑当前用户的crontab 0 6 * * * /usr/local/tomcat/sztFileFront/bin/freemem.sh 定时任务编写参考http://www.jb51.net/article/15008.htm 3、重启crond服务 /sbin/service crond restart 4、查看crond服务是否重启成功 /sbin/service crond status 最后问题解决。我设定的定时任务是每天早上6点执行一次freemem.sh脚本 转载于:https://my.oschina.net/u/3049601/blog/2990323
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87099.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!