一.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. 将以下代码添加至最后一行:
log4j.appender.MAIL=org.apache.log4j.net.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 log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.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所链接的地址是否正确。
fsockopen('链接地址', 80, $errno, $errstr, 30);。
HTTP头信息定义的接收程序访问地址与文件名称是否正确。
fwrite($fp, \接收程序文件名称 HTTP/1.1\\r\\n\fwrite($fp, \接收程序访问地址 \\r\\n\
送入ActiveMQ和接收ActiveMQ的程序配置文件中的queneName确认匹配后开启接收脚本 命令如下:nohup ./main.sh start>out.log & 然后可用tail –f out.log 命令来实时监控接收脚本日志
PHP接收程序有任何问题可随时联系ZZZ@XXX