公司服务器上部署个java独立模块,运行一段时间后,就会爆出 java.lang.OutOfMemoryError: Java heap space,而且系统下发告警短信,半夜发过来,还是冬天,那个心情我就不说了,更让人恼火的是有时家里的网络出问题了,唉,那个心情啊
但是还是要处理,而且事情比较忙,就写个简单的脚本先处理下,发现有溢出,自动重启。脚本如下:
#!/bin/bash
#监控进程是否出现堆空间内存溢出,如果发现内存溢出,则重启脚本
base_path=/opt/apps/test
log_path=${base_path}/log
while ((1==1))
do
grep 'OutOfMemoryError' ${log_path}/server_nohup.log > /dev/null
#进程日志中存在内存溢出
if [ "$?" == "0" ] ; then
curr_now=$(date +'%F %T')
echo "${curr_now}. OutOfMemoryError found in server_nohup.log, restart script will be invoked." | tee ${log_path}/monitor.log
> ${log_path}/server_nohup.log
sh ${base_path}/start_server.sh
echo "Restart OK." | tee ${log_path}/monitor.log
fi;
#60秒检测一次
sleep 60
done
start_server.sh 为应用程序的启动脚本。
完事,以后就安心了,等有时间再去检查程序存在的问题。
分享到:
相关推荐
内存溢出,这是一个在计算机编程和系统管理中常见的问题,特别是在处理大量数据或者高并发环境时。内存溢出,简单来说,就是程序在运行过程中请求的内存超过了系统能分配的最大内存,导致系统无法正常工作,可能会...
需要注意的是,简单增加内存并不一定能够完全解决问题,还需要结合具体的业务场景和代码结构,通过分析GC日志、内存泄漏检测等技术手段来进一步定位和解决内存溢出的根本原因。 在实际操作中,也需要考虑不同JVM的...
缓冲区溢出漏洞攻击是一种常见的安全威胁,主要发生在计算机程序处理数据时,由于对输入数据长度的不当检查或管理,导致程序内部分配的缓冲区被超出其容量的数据填充,进而覆盖了相邻内存区域的内容。这种攻击可以...
4.6 实例——JPEG处理堆溢出漏洞的利用 208 课后解惑 215 第五章 ShellCode变形编码大法 217 5.1 为什么要编码 217 5.2 简单的编码——异或大法 221 5.3 简便的变形——微调法 231 5.4 直接替换法 233 5.5 字符拆分...
4. **编写故障代码**:缓冲区溢出通常由不恰当的字符串处理、数组边界检查不足等原因造成。实验中可能会创建一个有意触发溢出的C语言程序,例如使用strcpy、gets等不安全的函数。 5. **编译故障代码**:在编写完...
例如,在脚本语言中,常见的问题如内存管理和溢出检测通常由语言自身处理,从而简化了代码编写过程。不过,这种便捷性往往以牺牲执行效率为代价。在一些性能要求较高的场景下,可能需要结合使用脚本语言和低级语言来...
4.6 实例——JPEG处理堆溢出漏洞的利用 208 课后解惑 215 第五章 ShellCode变形编码大法 217 5.1 为什么要编码 217 5.2 简单的编码——异或大法 221 5.3 简便的变形——微调法 231 5.4 直接替换法 233 5.5 字符拆分...
6. **编写exploit**:掌握如何编写exploit(攻击脚本)是关键,这通常涉及到计算偏移量、构造payload(payload是用于利用漏洞的恶意数据)以及处理各种安全机制。 7. **writeup的价值**:提供的writeup将详细解释每...
但是,处理大量数据时,可能需要分批插入,以避免内存溢出。 描述中提到需要修改`config.properties`文件,这是配置文件,通常用于存储应用程序的设置,如数据库连接信息(如URL、用户名、密码)、脚本生成的选项...
4.6 实例——JPEG处理堆溢出漏洞的利用 208 课后解惑 215 第五章 ShellCode变形编码大法 217 5.1 为什么要编码 217 5.2 简单的编码——异或大法 221 5.3 简便的变形——微调法 231 5.4 直接替换法 233 5.5 字符拆分...
假设有一个简单的C函数`DemoFunction(int par1, int par2)`,其中包含一个局部变量`localvar`,函数调用时栈的布局如下: ``` | localvar | | EBP | | return address | | par1 | | par2 | ``` #### 三、实例分析 ...
如果不及时清理,过多的变量可能导致内存溢出,影响程序运行速度。 清除MATLAB内存中最直接的方法是使用`clear`命令。这个命令可以用来删除指定的变量,或者清除整个工作空间的所有变量。例如,如果你想删除名为`...
1. **缓冲区溢出**:这是经典的安全漏洞,当程序处理输入数据时没有进行足够的边界检查,攻击者可以通过精心构造的输入数据导致内存溢出,进而执行任意代码。 2. **不安全的函数使用**:例如,ASP中的Execute、...
然而,由于各种原因(如内存溢出、系统崩溃或错误配置),Tomcat可能会意外停止工作,影响服务的正常运行。为了解决这个问题,我们可以编写一个监控并自动重启Tomcat的Shell脚本来确保服务的高可用性。以下将详细...
在大部分操作系统中,内存分配由以下两个简单的函数来处理: void *malloc(long numbytes):该函数负责分配 numbytes 大小的内存,并返回指向第一个字节的指针。 void free(void *firstbyte):如果给定一个由先前...
无论选择哪种方式,都需要注意内存管理,因为处理大图可能导致内存溢出。在处理完成后,记得及时释放Bitmap资源,避免占用过多的内存。 以上就是Android中图片灰度处理的一些基础知识和常见实现方法。通过熟练掌握...
- **Python脚本**:利用Python语言编写了一个简单的HTTP服务器,用于提供包含恶意JavaScript代码的网页。 - **HTTP Server**:通过继承`BaseHTTPServer`模块中的类创建了一个自定义的HTTP服务器,当客户端请求特定...
这个函数在`<mcheck.h>`头文件中声明,它的作用是激活一个特殊的malloc处理程序,用于记录内存分配和释放的情况。 3. **运行程序并分析结果**:执行程序后,生成的`output_file_name`文件包含原始的追踪信息,这些...
1. **内存限制**:默认情况下,Java会将所有上传的数据存储在内存中,对于大文件,这可能导致内存溢出。因此,我们需要配置`maxMemorySize`以限制内存使用,并启用临时文件存储。 2. **进度反馈**:通过计算已上传...