关于ActiveMq监控及调优的一些手段
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.ActiveMQ服务本身出现错误或异常
解决思路:由于ActiveMQ集成了log4j,可以采用log4j异常捕捉并发送邮件及时通知相关人员检查解决。
配置log4j,邮件发送的步骤:
1.打开apache-activemq-5.
2.0/conf目录下的log4j.properties
2.找到此行log4j.rootLogger= INFO, console, logfile 修改为log4j.rootLogger=INFO,
console, logfile, MAIL
3.将以下代码添加至最后一行:
# MAIL
log4j.appender.MAIL=.SMTPAppender
log4j.appender.MAIL.Threshold=ERROR
log4j.appender.MAIL.BufferSize=10
log4j.appender.MAIL.SMTPHost=mail.XXX
log4j.appender.MAIL.Subject=Activemq ERROR
log4j.appender.MAIL.SMTPUsername=xxx@XXX
log4j.appender.MAIL.SMTPPassword=填入邮箱密码
log4j.appender.MAIL.From= xxx @XXX
log4j.appender.MAIL.To=xxx@XXX,yyy@XXX,zzz@XXX
yout=org.apache.log4j.PatternLayout
yout.ConversionPattern=[ErrorMessage] %d - %c -%-4r [%t] %-5p %c %x - %m%n
4.将附件中的mail.jar拷贝到apache-activemq-
5.3.0\lib\optional 目录下。
二.通过这俩天的观察发现目前正在172.16.40.169机器运行的ActiveMQ日志中发现的一些存在的问题:
1. ActiveMQ运输连接器错误,程序代码本身需要优化可能更为重要。
2.日志中在2009-11-19 至2009-12-15期间一直再出现内存溢出错误导致ActiveMQ服
务崩溃
解决内存溢出的一些建议:修改bin目录下activemq文件中的ACTIVEMQ_OPTS 参数值加入以下参数:
-Xmx:设置JVM最大可用内存。
-Xms:设置JVM促使内存为。
此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xmn:设置年轻代大小。
整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。
持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。
此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
-Xss:设置每个线程的堆栈大小。
JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。
更具应用的线程所需内存大小进行调整。
在相同物理内存下,减小这个值能生成更多的线程。
但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
以上参数等设置完成后需要重启ActiveMQ
三.如果ActiveMQ服务本身运行正常,还可以通过ActiveMQ自带的admin查看队列收发状态。
管理页面地址:
1.启动ActiveMQ命令,进入bin目录nohup ./activemq &
2.查看ActiveMQ后台日志命令tail -f nohup.out
3.消息队列状态查看:http://172.16.40.169:8161/admin/queues.jsp
四.查看PHP接收ActiveMQ队列信息的程序的日志receive/out.log 如果其中无错误告警
信息,或发送动态后没有任何信息产生。
重新启动接收脚本并检查配置文件是否正确,方法如下:
进入receive目录中首先停掉接收脚本命令如下:./main.sh stop
查看receive/includes/quene.php和globals.php中的配置是否正确
查看globals.php文件中fsockopen所链接的地址是否正确。
f sockopen('链接地址', 80, $errno, $errstr, 30);。
HTTP头信息定义的接收程序访问地址与文件名称是否正确。
fwrite($fp, "POST 接收程序文件名称HTTP/1.1\r\n");
fwrite($fp, "Host: 接收程序访问地址\r\n");
送入ActiveMQ和接收ActiveMQ的程序配置文件中的queneName确认匹配后
开启接收脚本命令如下:nohup ./main.sh start>out.log &
然后可用tail –f out.log 命令来实时监控接收脚本日志
PHP接收程序有任何问题可随时联系ZZZ@XXX。