资源描述:
《关于activemq监控及调优的一些手段》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一.ActiveMQ服务本身出现错误或异常解决思路:由于ActiveMQ集成了log4j,可以采用log4j异常捕捉并发送邮件及时通知相关人员检查解决。配置log4j,邮件发送的步骤:1.打开apache-activemq-5.2.0/conf目录下的log4j.properties2.找到此行log4j.rootLogger=INFO,console,logfile修改为log4j.rootLogger=INFO,console,logfile,MAIL3.将以下代码添加至最后一行:#MAILlog4j.appender.MAIL=org.
2、apache.log4j.net.SMTPAppenderlog4j.appender.MAIL.Threshold=ERRORlog4j.appender.MAIL.BufferSize=10log4j.appender.MAIL.SMTPHost=mail.XXXlog4j.appender.MAIL.Subject=ActivemqERRORlog4j.appender.MAIL.SMTPUsername=xxx@XXXlog4j.appender.MAIL.SMTPPassword=填入邮箱密码log4j.appender.MAIL.
3、From=xxx@XXXlog4j.appender.MAIL.To=xxx@XXX,yyy@XXX,zzz@XXXlog4j.appender.MAIL.layout=org.apache.log4j.PatternLayoutlog4j.appender.MAIL.layout.ConversionPattern=[ErrorMessage]%d-%c-%-4r[%t]%-5p%c%x-%m%n4.将附件中的mail.jar拷贝到apache-activemq-5.3.0liboptional目录下。二.通过这俩天的观察发现目前正在1
4、72.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内存大小
5、=年轻代大小+年老代大小+持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。-Xss:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。以上参数等设置完成后需要重启ActiveMQ一.如果ActiveMQ服务本身运行正常,还可以通过Acti
6、veMQ自带的admin查看队列收发状态。管理页面地址:1.启动ActiveMQ命令,进入bin目录nohup./activemq&2.查看ActiveMQ后台日志命令tail-fnohup.out3.消息队列状态查看:http://172.16.40.169:8161/admin/queues.jsp二.查看PHP接收ActiveMQ队列信息的程序的日志receive/out.log如果其中无错误告警信息,或发送动态后没有任何信息产生。重新启动接收脚本并检查配置文件是否正确,方法如下:进入receive目录中首先停掉接收脚本命令如下:./m
7、ain.shstop查看receive/includes/quene.php和globals.php中的配置是否正确查看globals.php文件中fsockopen所链接的地址是否正确。fsockopen('链接地址',80,$errno,$errstr,30);。HTTP头信息定义的接收程序访问地址与文件名称是否正确。fwrite($fp,"POST接收程序文件名称HTTP/1.1r");fwrite($fp,"Host:接收程序访问地址r");送入ActiveMQ和接收ActiveMQ的程序配置文件中的queneName确认
8、匹配后开启接收脚本命令如下:nohup./main.shstart>out.log&然后可用tail–fout.log命令来实时监控接收脚本日志PHP接收程序有任何