mycat实践篇-mycat调优
MyCAT所有的调优参数都可以才server.xml中找到。mycat中几个关键的调优点已经Mycat性能调优指南.docx中有所讨论,这里只做为该文档的补充。
本章主要讨论如下两个内容:
1. processors数值的影响范围。
2. buffer和buffer队列大小。
processors数值定义了如下几个类的实例个数:
1. NIOProcessor
2. NIOReactorPool
3. AsynchronousChannelGroup
NIOProcessor类,持有所有的前后端连接,定期的空闲检查和写队列检查。要完成这个动作。Mycat是通过遍历NIOProcessor持有的所有连接来完成的。
所以,可以适当的根据系统性能调整NIOProcessor的个数。使得前、后段连接可以均匀的分布在每个NIOProcessor上。这样,就可以加快每次的空闲检查和写队列检查。快速的将空闲的连接关闭,减轻服务器的内存使用量。
NIOReactor是NIO中具体执行selector的类,当满足感兴趣的事件发生的时候,他就通知上次逻辑进行具体的处理。所以,NIOReactor的个数据等于具体事件处理器的个数。如果系统的配置允许的话,应该尽可能的增大NIOReactor的数量。默认值是系统核心数。
AsynchronousChannelGroup是AIO中必须提供的一个组成部分。AsynchronousChannelGroup根据processors的数值,确定实例数和channelGroup组内的线程池大小。后端AIO连接循环取AsynchronousChannelGroup数组中的实例。所以。如果是在AIO模式下使用Mycat的话,调整这个参数也是有必要的。默认值是系统核心数。
最后,可以根据自己硬件的实际情况,配置processors的具体大小。例如,配置processor的个数为16:
server.xml文件中定义<property name="processors">16</property>
还有一个要讨论的就是buffer pool。因为,所有的NIOProcessor共享一个buffer pool。
我们在server.xml中提到过:
BufferPool的总长度 = bufferPool / bufferChunk
我们可以连接到Mycat管理端口上,使用show @@processor命令列出所有的processor状态。
查看列: FREE_BUFFER、TOTAL_BUFFER、BU_PERCENT。
如果FREE_BUFFER的数值过小,则说明配置的buffer pool大小可能不够。这时候就要手动配置根据公式这个属性了,pool的大小最好是bufferChunk的整数倍。例如,配置buffer pool的大小为:5000
server.xml文件中定义<property name="processorBufferPool">20480000</property>
另一个buffer pool是线程内buffer pool,这个值可以根据processors的数值计算出来。具体看server.xml配置详解。