加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Mycat之——配置文件server.xml

发布时间:2020-12-16 08:22:33 所属栏目:百科 来源:网络整理
导读:来源URL:http://www.jb51.cc/article/p-hpvmmofe-bdx.html 可能存在版本问题,以下仅供参考 server.xml几乎保存了所有mycat需要的系统配置信息。其在代码内直接的映射类为SystemConfig类。现在就对这个文件中的配置,一一介绍。 user标签 [html] view plain

来源URL:http://www.52php.cn/article/p-hpvmmofe-bdx.html

可能存在版本问题,以下仅供参考


server.xml几乎保存了所有mycat需要的系统配置信息。其在代码内直接的映射类为SystemConfig类。现在就对这个文件中的配置,一一介绍。
user标签

[html] view plain copy
  1. <username="test">
  2. propertyname="password">test</property>
  3. propertyname="schemas">TESTDBpropertyname="readOnly">trueuser>
server.xml中的标签本就不多,这个标签主要用于定义登录mycat的用户和权限。例如上面的例子中,我定义了一个用户,用户名为test、密码也为test,可访问的schema也只有TESTDB一个。如果我在schema.xml中定义了多个schema,那么这个用户是无法访问其他的schema。在mysql客户端看来则是无法使用use切换到这个其他的数据库。如果使用了use命令,则mycat会报出这样的错误提示:ERROR 1044 (HY000): Access denied for user 'test' to database 'xxx'这个标签嵌套的property标签则是具体声明的属性值,正如上面的例子。我们可以修改user标签的name属性来指定用户名;修改password内的文本来修改密码;修改readOnly为true 或false来限制用户是否只是可读的;修改schemas内的文本来控制用户可放问的schema;修改schemas内的文本来控制用户可访问的schema,同时访问多个schema的话使用,隔开,例如:
copy
>TESTDB,db1,db2>

system标签

这个标签内嵌套的所有property标签都与系统配置有关,请注意,下面我会省去标签property直接使用这个标签的name属性内的值来介绍这个属性的作用。

defaultSqlParser属性

由于mycat最初是时候Foundation DB的sql解析器,而后才添加的Druid的解析器。所以这个属性用来指定默认的解析器。目前的可用的取值有:druidparser和 fdbparser。使用的时候可以选择其中的一种,目前一般都使用druidparser。

processors属性

这个属性主要用于指定系统可用的线程数,默认值为Runtime.getRuntime().availableProcessors()方法返回的值。主要影响processorBufferPool、processorBufferLocalPercent、processorExecutor属性。NIOProcessor的个数也是由这个属性定义的,所以调优的时候可以适当的调高这个属性。

processorBufferChunk属性

这个属性指定每次分配Socket Direct Buffer的大小,默认是4096个字节。这个属性也影响buffer pool的长度。

processorBufferPool属性

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

Mycat中有两个主要的buffer池:

- BufferPool
- ThreadLocalPool
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为数据库方式。默认是使用本地文件方式,文件方式主要只是用于测试使用。

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的大小。TCP连接参数的定义,可以查看Javadoc。
MySQL连接相关属性初始化mysql前后端连接所涉及到的一些属性:
packetHeaderSize : 指定Mysql协议中的报文头长度。默认4。
maxPacketSize : 指定Mysql协议可以携带的数据最大长度。默认16M。
idleTimeout : 指定连接的空闲超时时间。某连接在发起空闲检查下,发现距离上次使用超过了空闲时间,那么这个连接会被回收,就是被直接的关闭掉。默认30分钟。
charset : 连接的初始化字符集。默认为utf8。
txIsolation : 前端连接的初始化事务隔离级别,只在初始化的时候使用,后续会根据客户端传递过来的属性对后端数据库连接进行同步。默认为REPEATED_READ。
sqlExecuteTimeout:SQL执行超时的时间,Mycat会检查连接上最后一次执行SQL的时间,若超过这个时间则会直接关闭这连接。默认时间为300秒。

周期间隔相关属性

mycat中有几个周期性的任务来异步的处理一些我需要的工作。这些属性就在系统调优的过程中也是比不可少的。
processorCheckPeriod : 清理NIOProcessor上前后端空闲、超时和关闭连接的间隔时间。默认是1秒。
dataNodeIdleCheckPeriod : 对后端连接进行空闲、超时检查的时间间隔,默认是60秒。
dataNodeHeartbeatPeriod : 对后端所有读、写库发起心跳的间隔时间,默认是10秒。

服务相关属性

这里介绍一个与服务相关的属性,主要会影响外部系统对myact的感知。 bindIp : mycat服务监听的IP地址,默认值为0.0.0.0。 serverPort : 定义mycat的使用端口,默认值为8066。 managerPort : 定义mycat的管理端口,默认值为9066。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读