ActiveMQ



ActiveMQ上线注意事项(优化+安全)




1.配置web管理页面的安全认证


默认的web页面用户名密码admin:admin,非常不安全,


编辑jetty-realm.properties文件,(用户:密码,组)


admin: admin123, admin


user: user123, user


2. JVM优化


vim /bin/activemq


ACTIVEMQ_OPTS_MEMORY="-Xms1024M -Xmx1024M -XX:PermSize=256M -XX:MaxPermSize=384M"


官方参考文档


修改内存


linux下,修改bin/env的ACTIVEMQ_OPTS_MEMORY属性,Xms=最小内存,Xmx=最大内存


ACTIVEMQ_OPTS_MEMORY="-Xms64M -Xmx1G"


3.目标策略优化
在节点destinationPolicy配置策略,可以对单个或者所有的主题和队列进行设置,使用流量监控,当消息达到memoryLimit的时候,ActiveMQ会减慢消息的产生甚至阻塞,destinationPolicy的配置如下:
<destinationPolicy>
            <policyMap>
              <policyEntries>
                <policyEntry topic=">" producerFlowControl="true" memoryLimit="1mb" >
                  <pendingMessageLimitStrategy>
                    <constantPendingMessageLimitStrategy limit="1000"/>
                  </pendingMessageLimitStrategy>
                  <policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb" >
                </policyEntry> 
              </policyEntries>
            </policyMap>
        </destinationPolicy>
4.存储设置
memoryUsage表示ActiveMQ使用的内存,这个值要大于等于destinationPolicy中设置的所有队列的内存之和。
storeUsage表示持久化存储文件的大小。
tempUsage表示非持久化消息存储的临时内存大小
  <systemUsage>
            <systemUsage>
                <memoryUsage>
                    <memoryUsage percentOfJvmHeap="70" limit="50 mb"/>
                </memoryUsage>
                <storeUsage>
                    <storeUsage limit="100 gb"/>
                </storeUsage>
                <tempUsage>
                    <tempUsage limit="50 gb"/>
                </tempUsage>
            </systemUsage>
        </systemUsage>
        
5.配置NIO传输连接器 
<broker>  <transportConnectors>  <transportConnector name="nio" uri="nio://localhost:61616"/> </<transportConnectors> </broker>  
除了为每个连接使用一个线程的阻塞IO,ActiveMQ还可以为每一个客户端连接使用一个消息分发线程.你可以通过将系统参数org.apache.activemq.UseDedicatedTaskRunner设置为false
来设置ActiveMQ使用一个搞线程池.下面是一个示例: ACTIVEMQ_OPTS="-Dorg.apache.activemq.UseDedicatedTaskRunner=false" 确保ActiveMQ代理用于足够的内存来处理大量的并发连接,
需要分两步进行: 首先,你需要确保运行ActiveMQ的JVM在启动之前已经配置了足够的内存.可以使用 JVM的-Xmx选项来配置,如下所示: 
 ACTIVEMQ_OPTS="-Xmx1024M -Dorg.apache.activemq.UseDedicatedTaskRunner=false"
 
 
 6.配置MQ连接的安全认证


编辑activemq.xml,在<broker>下加


        <plugins>


            <simpleAuthenticationPlugin>


                <users>


                    <authenticationUser username="user" password="user123" groups="users" />


                </users>


            </simpleAuthenticationPlugin>


        </plugins>
 7.禁用不使用的连接协议


编辑activemq.xml,在<transportConnectors>中注销或删除不使用的<transportConnector>


        <transportConnectors>


            <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->


            <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>


            <!--<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>


            <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>


            <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>


            <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>-->


        </transportConnectors>
8.使用MySql作为持久化保存


编辑activemq.xml,在<beans>下插入如下bean配置


    <bean id="mysql-ds" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">


        <property name="driverClassName" value="com.mysql.jdbc.Driver" />


        <property name="url" value="jdbc:mysql://192.168.0.20/activemq?relaxAutoCommit=true" />


        <property name="username" value="activemq" />


        <property name="password" value="123456" />


        <property name="poolPreparedStatements" value="true" />


    </bean>


删除或注销掉<persistenceAdapter>下的<kahaD>,添加<jdbcPersistenceAdapter>


        <persistenceAdapter>


   <!--<kahaDB directory="${activemq.data}/kahadb"/>-->


            <jdbcPersistenceAdapter dataDirectory="activemq-data" dataSource="#mysql-ds"/>


        </persistenceAdapter>
        
        
9.将MQ添加到服务,并设置开机自启动;
运行以下命令注册为service,并设置为开机自动启动


ln -snf bin/activemq /etc/init.d/activemq
chkconfig --add activemq
chkconfig activemq on


然后就可以使用如下service命令了


service activemq start|stop|status|restart
10.ActiveMQ默认绑定本地端口61616,如果一切顺利,启动ActiveMQ成功后,可以执行命令:
netstat -an|find "61616"















  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值