server.xml 几乎保存了所有 mycat 需要的系统配置信息。

1、system 标签:

  该标签内嵌套的所有 property 标签都与系统配置有关。

charset 属性:

  该属性用于字符集设置。

<system>
<property name="charset">utf8</property>
</system>

defaultSqlParser 属性:

  该属性用来指定默认的解析器。目前的可用的取值有:druidparser 和 fdbparser。使用的时候可以选择其中的一种,目前一般都使用 druidparser。1.3 解析器默认为 fdbparser,1.4 默认为 druidparser,1.4 以后 fdbparser 作废。

processors 属性:

  该属性主要用于指定系统可用的线程数,默认值为机器 CPU 核心线程数。主要影响 processorBufferPool、 processorBufferLocalPercent、 processorExecutor 属性。NIOProcessor 的个数也是由这个属性定义的,所以调优的时候可以适当的调高这个属性。

processorBufferChunk 属性:

  该属性指定每次分配 Socket Direct Buffer 的大小,默认是 4096 个字节。这个属性也影响 buffer pool 的长度。如果一次性获取的数过大 buffer 不够用会经常出现警告,此时可以适当调大。

processorBufferPool 属性:

  该属性指定 bufferPool 计算比例值。由于每次执行 NIO 读、写操作都需要使用到 buffer,系统初始化的时候会建立一定长度的 buffer 池来加快读、写的效率,减少建立 buffer 的时间。Mycat 中有两个主要的 buffer 池:

  BufferPool:BufferPool 由 ThreadLocalPool 组合而成,每次从 BufferPool 中获取 buffer 都会优先获取ThreadLocalPool 中的 buffer,未命中之后才会去获取 BufferPool 中的 buffer。也就是说 ThreadLocalPool 是作为 BufferPool 的二级缓存,每个线程内部自己使用的。BufferPool 上的 buffer 则是每个 NIOProcessor 都共享的。

  这个属性的默认值为: 默认bufferChunkSize(4096) * processors属性 * 1000

   BufferPool 的总长度 = bufferPool / bufferChunk。

若 bufferPool 不是 bufferChunk 的整数倍,则总长度为前面计算得出的商 + 1

假设系统线程数为 4,其他都为属性的默认值,则:

bufferPool = 4096 * 4 * 1000

BufferPool 的总长度 : 4000 = 16384000 / 4096

 
 

processorBufferLocalPercent 属性:

  前面提到了 ThreadLocalPool。这个属性就是用来控制分配这个 pool 的大小用的,这个属性默认值为 100。

  线程缓存百分比 = bufferLocalPercent / processors 属性。

  例如,系统可以同时运行 4 个线程,使用默认值,则根据公式每个线程的百分比为 25。最后根据这个百分比来计算出具体的 ThreadLocalPool 的长度公式如下:

  ThreadLocalPool 的长度 = 线程缓存百分比 * BufferPool 长度 / 100

  假设 BufferPool 的长度为 4000,其他保持默认值。

  那么最后每个线程建立上的 ThreadLocalPool 的长度为: 1000 = 25 * 4000 / 100

processorExecutor 属性:

  这个属性主要用于指定 NIOProcessor 上共享的 businessExecutor 固定线程池大小。 mycat 在需要处理一些异步逻辑的时候会把任务提交到这个线程池中。新版本中这个连接池的使用频率不是很大了,可以设置一个较小的值。

sequnceHandlerType 属性:

  指定使用 Mycat 全局序列的类型。 0 为本地文件方式,1 为数据库方式,2 为时间戳序列方式,3 为分布式ZK ID 生成器,4 为 zk 递增 id 生成。

TCP 连接相关属性:

  • StandardSocketOptions.SO_RCVBUF
  • StandardSocketOptions.SO_SNDBUF
  • StandardSocketOptions.TCP_NODELAY

以上这三个属性,分别由:

  frontSocketSoRcvbuf 默认值: 1024 * 1024

  frontSocketSoSndbuf 默认值: 4 * 1024 * 1024

  frontSocketNoDelay 默认值: 1

  backSocketSoRcvbuf 默认值: 4 * 1024 * 1024

  backSocketSoSndbuf 默认值: 1024 * 1024

  backSocketNoDelay 默认值: 1

各自设置前后端 TCP 连接参数。 Mycat 在每次建立前、后端连接的时候都会使用这些参数初始化连接。可以按系统要求适当的调整这些 buffer 的大小。

其他涉及属性:

1.1、心跳属性

mycat 中有几个周期性的任务来异步的处理一些我需要的工作。这些属性就在系统调优的过程中也是比不可少的。

processorCheckPeriod :

  清理 NIOProcessor 上前后端空闲、超时和关闭连接的间隔时间。默认是 1 秒,单位毫秒。

dataNodeIdleCheckPeriod :

  对后端连接进行空闲、超时检查的时间间隔,默认是 300 秒,单位毫秒。

dataNodeHeartbeatPeriod :

  对后端所有读、写库发起心跳的间隔时间,默认是 10 秒,单位毫秒。

1.2、服务相关属性

这里介绍一个与服务相关的属性,主要会影响外部系统对 myact 的感知。

bindIp :

  mycat 服务监听的 IP 地址,默认值为 0.0.0.0。

serverPort :

  定义 mycat 的使用端口,默认值为 8066。

managerPort :

  定义 mycat 的管理端口,默认值为 9066。

1.3、Mysql 连接相关属性

初始化 mysql 前后端连接所涉及到的一些属性:

packetHeaderSize :

  指定 Mysql 协议中的报文头长度。默认 4。

maxPacketSize :

  指定 Mysql 协议可以携带的数据最大长度。默认 16M。

idleTimeout :

  指定连接的空闲超时时间。某连接在发起空闲检查下,发现距离上次使用超过了空闲时间,那么这个连接会被回收,就是被直接的关闭掉。默认 30 分钟,单位毫秒。

charset :

  连接的初始化字符集。默认为 utf8。

txIsolation :

  前端连接的初始化事务隔离级别,只在初始化的时候使用,后续会根据客户端传递过来的属性对后端数据库连接进行同步。默认为 REPEATED_READ,设置值为数字默认 3。

  •   READ_UNCOMMITTED = 1;
  •   READ_COMMITTED = 2;
  •   REPEATED_READ = 3;
  •   SERIALIZABLE = 4;

sqlExecuteTimeout :

  SQL 执行超时的时间,Mycat 会检查连接上最后一次执行 SQL 的时间,若超过这个时间则会直接关闭这连接。默认时间为 300 秒,单位秒。

2、user 标签

<user name="test">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
<property name="benchmark">111111</property>
<proerty name="usingDecrypt">1</property>
<privileges check="false">
<schema name="TESTDB" dml="0010" showTables="custome/mysql">
<table name="tb_user" dml="0110"></table>
<table name="tb_dynamic dml="1111"></table>
</schema>
</privileges>
</user>

该标签主要用于定义登录 mycat 的用户和权限。示例定义了一个用户,用户名为 test、密码为123456,可访问的 schema 也只有 TESTDB 一个。

property属性 :

  声明具体的属性值,例如修改schemas内的文本来控制用户可访问的 schema,同时访问多个 schema 的话使用,隔开,例如:

<property name="schemas">TESTDB,db1,db2<property>

Benchmark 属性:

  用于mycat连接服务降级处理:benchmark基准,当前端的整体connection数达到基准值时,对来自该账户的请求开始拒绝连接,0或不设表示不限制。

usingDecrypt 属性:

  是否对密码加密。默认0表示不开启,1表示开启密码加密,同时使用加密程序对密码加密。

privileges 属性:

  对用户的 schema 及下级的 table 进行精细化的 DML 权限控制。

  check 属性是用于标识是否开启 DML 权限检查, 默认 false 标识不检查。由于 Mycat 一个用户的 schemas 属性可配置多个 schema ,所以 privileges 的下级节点 schema 节点同样可配置多个,对多库多表进行细粒度的 DML 权限控制。

  Schema/Table 上的 dml 属性:

 

Mycat 配置文件server.xml的更多相关文章

  1. Tomcat配置文件server.xml

    Tomcat目录中的server.xml配置文件 server.xml称为主配置文件或全局配置文件 它完成以下两个目标: 1,提供Tomcat组件的初始化配置 2,说明Tomcat的结构和含义,使得T ...

  2. Tomcat配置(二):tomcat配置文件server.xml详解和部署简介

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  3. Tomcat(二):tomcat配置文件server.xml详解和部署简介

    Tomcat系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1. 入门示例:虚拟主机提供web服务 该示例通过设置虚拟主机来提供web服务 ...

  4. Mycat配置文件schema.xml参数配置

    Mycat原理: Mycat的原理中最重要的一个动词是"拦截",它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析:如分片分析.路由分析.读写分离分析.缓存分析等 ...

  5. 详解Tomcat 配置文件server.xml

    前言 Tomcat隶属于Apache基金会,是开源的轻量级Web应用服务器,使用非常广泛.server.xml是Tomcat中最重要的配置文件,server.xml的每一个元素都对应了Tomcat中的 ...

  6. Tomcat 配置文件 server.xml

    Tomcat隶属于Apache基金会,是开源的轻量级Web应用服务器,使用非常广泛.server.xml是Tomcat中最重要的配置文件,server.xml的每一个元素都对应了Tomcat中的一个组 ...

  7. Tomcat 配置文件server.xml详解

    前言 Tomcat隶属于Apache基金会,是开源的轻量级Web应用服务器,使用非常广泛.server.xml是Tomcat中最重要的配置文件,server.xml的每一个元素都对应了Tomcat中的 ...

  8. tomcat 配置文件server.xml 详解 Connector Engine Host Context

    目录 一 server.xml 1.1 server 配置 1.2 service 配置 1.3 Executor 1.4 Connector 配置 1.5 Engine 其他tocmat 文章 一 ...

  9. tomcat 的配置文件 server.xml 详解

    server.xml位于$TOMCAT_HOME/conf目录下,作为整个 tomcat 服务器最核心的配置文件,server.xml的每一个元素都对应了 tomcat中的一个组件,通过对xml中元素 ...

随机推荐

  1. 正则表达式-Regex详解

    1.什么是正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑.给定一个正 ...

  2. C# winform语音提示

    1.SpeechSynthesizer文字转音频 项目添加引用:System.Speech using(SpeechSynthesizer speech = new SpeechSynthesizer ...

  3. MySQL如何选择合适的索引

    先来看一个栗子 EXPLAIN select * from employees where name > 'a'; 如果用name索引查找数据需要遍历name字段联合索引树,然后根据遍历出来的主 ...

  4. Badboy录制模式

    参考: http://leafwf.blog.51cto.com/872759/1109940 http://www.51testing.com/html/00/130600-1367743.html ...

  5. CodeForces 689 D Friends and Subsequences

    Friends and Subsequences 题解: 如果左端点来说, 那么对于a[i]来说是向上的一条折线, b[i]来说是向下的一条折线, 那么如果这2个折线求交点个数的话, 我们可以二分去求 ...

  6. poj2528 Mayor's posters(线段树区间修改+特殊离散化)

    Description The citizens of Bytetown, AB, could not stand that the candidates in the mayoral electio ...

  7. Word 远程调用失败:异常来自 HRESULT:0x800706BE

    之前服务器上一直运行正常的,这几天突然报错 “远程过程调用失败. (异常来自 HRESULT:0x800706BE) ” 解决方案:组件服务—我的电脑—属性—COM安全—编辑默认值  添加各种用户权限 ...

  8. 【LeetCode】34-在排序数组中查找元素的第一个和最后一个位置

    题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值 ...

  9. Wireshark解密HTTPS流量的两种方法

    原理 我们先回顾一下SSL/TLS的整个握手过程: Clienthello:发送客户端的功能和首选项给服务器,在连接建立后,当希望重协商.或者响应服务器的重协商请求时会发送. version:客户端支 ...

  10. [0]尝试用Unity3d制作一个王者荣耀(持续更新)->游戏规划

    太得闲了于是想写个农药,虽然可能会失败但是还是要试一试. 因为是自学的不是Unity专业的可能表达语言会有些不标准!望见谅! 结构: 以组件式(比如说摇杆控制和玩家部分的编写是分离的,可以自由拼装)作 ...