tomcat假死与异常监控
tomcat常见的错误与解决方案小结

tomcat常见的错误与解决⽅案⼩结⼀、tomcat启动时错误问题1:The JAVA_HOME environment variable is not defined This environment variable is needed to run this program;解决:没有在tomcat的配置⽂件.bash_profile中设置环境变量JAVA_HOME,具体设置⽅法为:加⼊如下⼏⾏:JAVA_HOME=/home/tomcat/j2sdk1.4.2_08(具体值要以实际的jdk安装路径为准)export JAVA_HOMECLASSPATH=/home/tomcat/j2sdk1.4.2_08/lib/tools.jar:/home/tomcat/j2sdk1.4.2_08/lib/dt.jarexport CLASSPATH问题2:Error occurred during initialization of VM Could not reserve enough space for object heap解决:在tomcat的bin⽬录下,catalina.sh⽂件的tomcat内存参数配置过⼤,超过机器可⽤内存总数造成,修改到适当的值即可,修改的参数为:JAVA_OPTS="-Xms50m -Xmx60m"问题3:tomcat启动时报某个⽬录没有权限,启动失败,或者不能执⾏某些jsp页解决:tomcat需要tomcat⽤户具有⼀些⽬录和⽂件的相应权限, 所有⽬录应该具有读写执⾏(浏览)的权限,jsp,class⽂件应该最少具有读权限, ⼀些⽂件需要写权限,下⾯是已知的需要读写权限⽂件的列表:$CATALINA_HOME/logs下所有⽂件$CATALINA_HOME/work下所有⽂件$CATALINA_HOME/publish/main/count.txt⽂件$CATALINA_HOME/publish/chatroom/resource下的所有.xml⽂件所有上传图⽚⽬录都需要写权限。
程序监控方法

程序监控方法
程序监控是一个广泛的概念,涉及对计算机程序运行状况的监测和管理。
以下是几种常见的程序监控方法:
1. 日志监控:通过收集和分析程序的运行日志,可以了解程序的运行状态、性能指标、错误信息等。
常见的日志监控工具包括ELK(Elasticsearch、Logstash、Kibana)等。
2. 性能监控:通过监控程序的性能指标,如CPU使用率、内存占用率、磁盘I/O等,可以了解程序的资源消耗情况,及时发现性能瓶颈并进行优化。
常见的性能监控工具包括Prometheus、Grafana等。
3. 异常检测:通过分析程序的运行数据,自动检测异常行为,如程序崩溃、数据泄露等。
常见的异常检测工具包括Sentry、Datadog等。
4. 代码分析:通过静态或动态分析程序代码,发现潜在的错误、安全漏洞等问题。
常见的代码分析工具包括SonarQube、FindBugs等。
5. 依赖监控:通过监控程序所依赖的其他服务或资源,如数据库、外部API 等,确保程序的正常运行。
常见的依赖监控工具包括Dynatrace、New Relic等。
以上是一些常见的程序监控方法,实际应用中可以根据具体情况选择合适的监控工具和方法,以保障程序的稳定性和可靠性。
监控tomcat的几种方法

Tomcat 监控方法方法1:.使用tomcat自带的status页具体方法:步骤1:修改%tomcat安装路径%\conf \tomcat-users文件,配置admin设置权限。
在步骤2:完成后,启动tomcat,输入:http://localhost:8080--(IP,端口号,可远程访问)点击status,输入账号,密码(manager,1234),进入status,时时刷新页面,查看当前tomcat 状态。
或者直接访问:http://localhost:8080/manager/status页面。
备注1:若希望整个服务器的性能数据以一个单行的xml文件形式表示,则进入如下界面:http://localhost:8080/manager/status?XML=true备注2:若服务器中存在几个项目,单独对某个项目进行监控,则需要另行增加代码。
步骤3:上面得到的只是当前情况下的性能数据,要获得一个阶段的性能数据,必须设定采样频率,定时读取,将数据汇总并分析。
步骤4:对得到的数据得出图表。
参考以下示例:通过Linux自带的Bash来实现,绘制图表采用的是Gnuplot。
下列代码生成html的报表只是方法2:使用JDK自带工具,Jconsole具体方法:步骤1:.编辑%tomcat安装路径%\bin\catalina.bat文件。
添加下列内容:set JAVA_OPTS= -Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=10004-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false步骤2:启动tomcat,进入JDK安装路径\jdk1.5.0_22\bin 下双击打开Jconsole文件,显示Jconsole连接页面。
tomcat告警规则 -回复

tomcat告警规则-回复在本文中,我们将详细探讨Tomcat的告警规则。
Tomcat是一个开源的Java Servlet容器,用于实现Java Servlet和JavaServer Pages(JSP)规范。
它是Java开发人员广泛使用的Web服务器,因其稳定性和灵活性而备受赞誉。
为了保持Tomcat服务器的稳定运行,及时发现和解决问题至关重要。
Tomcat提供了告警规则,通过这些规则,我们可以在服务器遇到问题时接收到警报,并迅速采取行动。
接下来,我们将一步一步回答关于Tomcat告警规则的问题。
第一步:了解Tomcat告警规则的基础知识Tomcat的告警规则是指一系列配置项,用于定义在服务器发生特定事件或达到特定条件时要触发的告警行为。
通过这些规则,我们可以设置服务器的告警级别、触发条件和报警方式等。
第二步:配置Tomcat告警规则要配置Tomcat的告警规则,我们需要修改Tomcat的配置文件。
主要的配置文件是`logging.properties`和`logging.xml`。
对于不同的Tomcat 版本,可能会有所不同,但大致的步骤是相同的。
1. 打开`logging.properties`文件,该文件位于Tomcat的`conf`目录下。
2. 找到关于日志的配置项,一般以`handlers`开头。
在这里,我们可以指定要使用的处理程序,以及每个处理程序的级别和格式。
3. 设置告警级别。
可以选择的级别包括`SEVERE`、`WARNING`、`INFO`、`CONFIG`、`FINE`等。
根据需求,我们可以将级别设置为`WARNING`或更高,以便只接收到重要的告警信息。
4. 配置处理程序。
我们可以选择使用内置的处理程序,如`java.util.logging.ConsoleHandler`或`org.apache.juli.FileHandler`,也可以自定义处理程序。
设置处理程序的目标和格式,以便更好地满足我们的需求。
tomcat安全规范(tomcat安全加固和规范)

tomcat安全规范(tomcat安全加固和规范)tomcat是⼀个开源Web服务器,基于Tomcat的Web运⾏效率⾼,可以在⼀般的硬件平台上流畅运⾏,因此,颇受Web站长的青睐。
不过,在默认配置下其存在⼀定的安全隐患,可被恶意攻击。
以下是⼀些安全加固的⽅法:版本安全升级到最新稳定版,出于稳定性考虑,不建议进⾏跨版本升级。
服务降权不要使⽤root⽤户启动tomcat,使⽤⽤普通⽤户启动Tomcat,集群内⽤户名统⼀UID端⼝保护1 更改tomcat管理端⼝8005 ,此端⼝有权限关闭tomcat服务,但要求端⼝配置在8000~8999之间,并更改shutdown执⾏的命令2 若 Tomcat 都是放在内⽹的,则针对 Tomcat 服务的监听地址都是内⽹地址3 修改默认的ajp 8009端⼝为不易冲突(⼤于1024),但要求端⼝配置在8000~8999之间禁⽤管理端1 删除默认$CATALINA_HOME/conf/tomcat-users.xml⽂件,重启tomcat将会⾃动⽣成新的⽂件2 删除$CATALINA_HOME/webapps下载默认的所有⽬录和⽂件3 将tomcat应⽤根⽬录配置为tomcat安装⽬录以外的⽬录隐藏Tomcat的版本信息针对该信息的显⽰是由⼀个jar包控制的,该jar包存放在$CATALINA_HOME/lib⽬录下,名称为 catalina.jar,通过 jar xf 命令解压这个 jar 包会得到两个⽬录 META-INF 和 org ,修改 org/apache/catalina/util/ServerInfo.properties ⽂件中的 serverinfo 字段来实现来更改我们tomcat的版本信息关闭war⾃动部署默认 Tomcat 是开启了对war包的热部署的。
为了防⽌被植⼊⽊马等恶意程序,因此我们要关闭⾃动部署。
修改实例:<Host name="localhost" appBase=""unpackWARs="false" autoDeploy="false">⾃定义错误页⾯编辑conf/web.xml,在</web-app>标签上添加以下内容:<error-page><error-code>404</error-code><location>/404.html</location></error-page><error-page><error-code>500</error-code><location>/500.html</location></error-page>屏蔽⽬录⽂件⾃动列出编辑conf/web.xml⽂件<servlet><servlet-name>default</servlet-name><servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><init-param><param-name>listings</param-name><param-value>false</param-value></init-param><load-on-startup>1</load-on-startup></servlet><param-value>false</param-value>这⾥false为不列出,true为充许列出多虚拟主机强烈建议不要使⽤ Tomcat 的虚拟主机,推荐每个站点使⽤⼀个实例。
基于windows服务监控tomcat服务,防止tomcat死掉

安装tomcat监控服务安装tomcat监控服务的目的是为了随时监测tomcat的运行状况,若出现内存溢出或其它不能提供正常服务的情况,系统自动能重启tomcat服务,由此减少开发服务人员的工作量,也能提高服务质量。
安装设置分为以下四个步骤:一、创建监控页面在项目系统里添加一个提供监控系统访问的页面monitor.jsp,只需输出一句代码,代码如下:<%String s=”ok”;out.println(s.length());%>二、修改tomcat配置若是系统自动安装的服务,可直接跳过这一步。
但是需确定服务名称,以便在以后的步骤使用,如下图:服务名称若是手动为tomcat设置服务,请按以下步骤进行:1、进入tomcat目录下的bin目录,用记事本打开service.bat文件,找到setSERVICE_NAME=TOMCA TXX这一句,把后面的值改成自己对tomcat设置的服务名,把PR_DISPLAYNAME的值设置为显示的服务名称,这个是在系统管理的服务里面中列表里显示的名字。
如设置信访系统,则设置为这样:Set SERVICE_NAME=xfglSet PR_DISPLAYNAME=tomcat xfgl保存。
2、在运行里输入“CMD ”,进入命令控制台,使用cd 命令转到tomcat 目录下的bin 目录,运行service.bat install 命令,把tomcat 设置为系统启动服务。
3、进入控制面板->管理工具->服务,在服务列表中找到“tomcat xfgl ”一项,双击弹出窗口,把启动类型改为“自动”,确定保存。
三、 设置监控脚本文件新建一个vbs 脚本文件,用于访问tomcat 服务下的一个jsp 页面monitor.jsp 。
脚本代码如下:该脚本的目的是定时访问monitor.jsp 页面,判断页面返回的状态码,若状态不为200,则表示该页面未正常返回,可能是tomcat 服务出了问题,随后自动重启tomcat服务,并记录日志,把日志记录在C盘,日志文件以tomcat服务名和当前日期命名。
tomcat假死与异常监控

tomcat假死与异常监控tomcat假死与异常监控在开发的tomcat服务应用中,经常会遇到tomcat假死情况,除了每次出现假死时找出原因外,有时候由于业务的重要性,需要及时发现服务异常并及时解决。
所以本人就想通过Linux定时任务定时监控的方式来预防这个问题,一旦发现及时通知告警并重启服务,然后才通过日志查明原因从根本上解决。
1)tomcat假死状态处于假死状态时,后台日志不在生成,服务链接没有响应,但tomcat的进程是存在的,所以若要监控是否处于假死状态可以从日志和服务链接方面入手,但由于检测日志比较麻烦,本人选择的是通过选择某个服务链接获取其访问状态码http_code,若状态码不正常则确认为tomcat服务异常。
例如:url=“http://localhost/….”code=$(curl -o /dev/null --retry 3 -s -w %{http_code} $url) echo “${code}”上面脚本中url变量为选择的适合的监控链接,code就是该链接正常时应该返回的返回码,正常是为200,有时候由于浏览器缓存可能返回302等也是正常的,所以建议最好选择那种后台的链接能够返回200的,这样检测起来比较方便。
2)tomcat异常监控在tomcat运行日志中,经常会出现一些异常,对于有些异常我们可以不用管,但例如数据库链接异常、内存溢出异常等,这些异常会直接导致服务不能正常使用,所以需要对这些类型的异常进行监控,同样的本人也是通过Linux脚本实时检查tomcat运行日志的方式来检测服务状态。
脚本如下:errormessage1="/doc/261950289.html,ng.OutOfMemoryError"ifcat ${tomcatpath}/logs/catalina.out |grep "$errormessage1">/dev/null thenrestartFlag="yes"其实就是通过cat |grep 的方式来查找异常特征字符串是否在运行日志文件中存在,存在则代表出现了该类异常,当然这是需要程序对该类异常做了处理的(捕捉到并输出到控制台)。
前端异常监控解决方案

前端异常监控解决方案
《前端异常监控解决方案》
在前端开发中,异常是无法避免的。
无论是网络问题、服务器故障还是客户端代码错误,都可能导致用户的体验变差甚至应用不可用。
因此,前端异常监控解决方案成为了每个开发团队都必须重视的问题。
前端异常监控解决方案主要包括以下几个方面:
1. 实时监控:通过实时监控工具,追踪并记录应用的异常情况,以便开发人员能够及时发现和定位问题。
2. 报警机制:当异常出现时,需要及时地通知到相关人员。
因此,报警机制是异常监控解决方案中至关重要的环节。
3. 异常分类和分析:不同类型的异常需要采取不同的处理方式,因此需要对异常进行分类和分析,以便更好地解决问题。
4. 异常处理:当异常出现时,需要采取相应的处理方式,例如降级处理、自动恢复、重试机制等,以保证应用的稳定性和用户体验。
5. 性能优化:有些异常可能是由于性能问题导致的,因此需要对应用的性能进行监控和优化,以减少异常的发生。
当前,市面上已经有很多前端异常监控解决方案可以选择,例
如Sentry、Bugsnag、Raygun等。
这些工具提供了实时监控、报警机制、异常分类和分析、异常处理等功能,可以帮助开发团队更好地管理和解决前端异常问题。
总的来说,前端异常监控解决方案对于保障应用的稳定性和用户体验至关重要。
通过建立完善的前端异常监控体系,可以帮助开发团队及时发现和解决异常问题,提升应用的质量和用户满意度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
tomcat假死与异常监控
在开发的tomcat服务应用中,经常会遇到tomcat假死情况,除了每次出现假死时找出原因外,有时候由于业务的重要性,需要及时发现服务异常并及时解决。
所以本人就想通过Linux定时任务定时监控的方式来预防这个问题,一旦发现及时通知告警并重启服务,然后才通过日志查明原因从根本上解决。
1)tomcat假死状态
处于假死状态时,后台日志不在生成,服务链接没有响应,但tomcat的进程是存在的,所以若要监控是否处于假死状态可以从日志和服务链接方面入手,但由于检测日志比较麻烦,本人选择的是通过选择某个服务链接获取其访问状态码http_code,若状态码不正常则确认为tomcat服务异常。
例如:
url=“http://localhost/….”
code=$(curl -o /dev/null --retry 3 -s -w %{http_code} $url)
echo “${code}”
上面脚本中url变量为选择的适合的监控链接,code就是该链接正常时应该返回的返回码,正常是为200,有时候由于浏览器缓存可能返回302等也是正常的,所以建议最好选择那种后台的链接能够返回200的,这样检测起来比较方便。
2)tomcat异常监控
在tomcat运行日志中,经常会出现一些异常,对于有些异常我们可以不用管,但例如数据库链接异常、内存溢出异常等,这些异常会直接导致服务不能正常使用,所以需要对这些类型的异常进行监控,同样的本人也是通过Linux脚本实时检查tomcat运行日志的方式来检测服务状态。
脚本如下:
errormessage1="ng.OutOfMemoryError"
if
cat ${tomcatpath}/logs/catalina.out |grep "$errormessage1">/dev/null then
restartFlag="yes"
其实就是通过cat |grep 的方式来查找异常特征字符串是否在运行日志文件中存在,存在则代表出现了该类异常,当然这是需要程序对该类异常做了处理的(捕捉到并输出到控制台)。
附带说明:语句 cat …加上了 >/dev/null是为了不输出具体查询的结果的
3)tomcat重启
检查出这些异常时,一般先通过重启服务的方式来优先恢复服务,则对tomcat进行脚本重启。
tomcat重启的原理是:先通过命令获取tomcat进程id,然后kill掉该进程id,再重启tomcat命令即可,具体命令如:
#tomcat部署路径
tomcatpath="/data/apps/tomcat"
#获取tomcat进程id
pid=$(ps -ef |grep java| grep ${tomcatpath} |grep -v grep | awk '{print $2}')
kill -9 $pid
cd ${tomcatpath}
./bin/startup.sh
4)配置Linux定时任务
将脚本编辑保存到文件check.sh
设置脚本文件为可执行
#chmod u+x check.sh
添加到定时任务
#cront -e 后编辑添加
*/10 * * * * /data/apps/scripts/check.sh >> /data/apps/scripts/check.log 2>&1
(此处设置为每10分钟检查一次)
5)附完整的同时监控假死和内存溢出/数据库链接异常的监控脚本代码
#!/bin/sh
# ----------------------------------
# 服务器错误检查与服务重启定时脚本
# 每10分钟执行一次
# ----------------------------------
export LANG="zh_CN.GB18030"
export LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
export SUPPORTED="zh_CN.GB18030:zh_CN:zh"
export SYSFONT="lat0-sun16"
export SYSFONTACM="8859-15"
tomcatpath="/data/apps/tomcat"
errormessage1="com.alibaba.druid.pool.GetConnectionTimeoutException" errormessage2="ng.OutOfMemoryError"
exetime=$(date +"%y-%m-%d_%H:%M:%S")
checkUrl="http://localhost/web/…”
echo "check ${tomcatpath}/logs/catalina.out at ${exetime}"
pid=$(ps -ef |grep java| grep ${tomcatpath} |grep -v grep | awk '{print $2}')
echo "pid=${pid}"
#是否重启标志,yes重启,no不重启
restartFlag="no"
##
hicode=$(curl -o /dev/null --retry 3 -s -w %{http_code} $checkUrl)
if [ "$hicode" != "200" ]
then
echo "code=${hicode}"
restartFlag="yes"
elif
cat ${tomcatpath}/logs/catalina.out |grep "$errormessage1">/dev/null then
restartFlag="yes"
elif
cat ${tomcatpath}/logs/catalina.out |grep "$errormessage2">/dev/null then
restartFlag="yes"
fi
##
if [ $restartFlag = "yes" ]
then
#此处添加告警,可通过发邮件或发短信两种方式
kill -9 $pid
mv ${tomcatpath}/logs/catalina.out
${tomcatpath}/logs/catalina.${exetime}
cd ${tomcatpath}
echo "wait at $(date +"%y-%m-%d_%H:%M:%S")"
#sleep 60
./bin/startup.sh
echo "restart at $(date +"%y-%m-%d_%H:%M:%S")"
else echo "checkweb is normal at $(date +"%y-%m-%d_%H:%M:%S")" fi。