Files
dble/src/main/java/io/mycat/manager/response/ShowSysParam.java

143 lines
6.2 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package io.mycat.manager.response;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
import io.mycat.MycatServer;
import io.mycat.backend.mysql.PacketUtil;
import io.mycat.config.Fields;
import io.mycat.config.model.SystemConfig;
import io.mycat.manager.ManagerConnection;
import io.mycat.net.mysql.EOFPacket;
import io.mycat.net.mysql.FieldPacket;
import io.mycat.net.mysql.ResultSetHeaderPacket;
import io.mycat.net.mysql.RowDataPacket;
import io.mycat.util.StringUtil;
/**
* show Sysconfig param detail info
*
* @author rainbow
*
*/
public class ShowSysParam {
private static final int FIELD_COUNT = 3;
private static final ResultSetHeaderPacket header = PacketUtil
.getHeader(FIELD_COUNT);
private static final FieldPacket[] fields = new FieldPacket[FIELD_COUNT];
private static final EOFPacket eof = new EOFPacket();
static {
int i = 0;
byte packetId = 0;
header.packetId = ++packetId;
fields[i] = PacketUtil.getField("PARAM_NAME", Fields.FIELD_TYPE_VARCHAR);
fields[i++].packetId = ++packetId;
fields[i] = PacketUtil.getField("PARAM_VALUE", Fields.FIELD_TYPE_VARCHAR);
fields[i++].packetId = ++packetId;
fields[i] = PacketUtil.getField("PARAM_DESCR", Fields.FIELD_TYPE_VARCHAR);
fields[i++].packetId = ++packetId;
eof.packetId = ++packetId;
}
public static void execute(ManagerConnection c) {
ByteBuffer buffer = c.allocate();
// write header
buffer = header.write(buffer, c, true);
// write fields
for (FieldPacket field : fields) {
buffer = field.write(buffer, c, true);
}
// write eof
buffer = eof.write(buffer, c, true);
// write rows
byte packetId = eof.packetId;
SystemConfig sysConfig = MycatServer.getInstance().getConfig().getSystem();
List<String> paramValues = new ArrayList<String>();
paramValues.add(sysConfig.getProcessors() + "");
paramValues.add(sysConfig.getBufferPoolChunkSize() + "B");
paramValues.add(sysConfig.getBufferPoolPageSize() + "B");
paramValues.add(sysConfig.getProcessorExecutor() + "");
paramValues.add(sysConfig.getSequnceHandlerType() == 1 ? "数据库方式" : "本地文件方式");
paramValues.add(sysConfig.getPacketHeaderSize() + "B");
paramValues.add(sysConfig.getMaxPacketSize()/1024/1024 + "M");
paramValues.add(sysConfig.getIdleTimeout()/1000/60 + "分钟");
paramValues.add(sysConfig.getCharset() + "");
paramValues.add(ISOLATIONS[sysConfig.getTxIsolation()]);
paramValues.add(sysConfig.getSqlExecuteTimeout() + "");
paramValues.add(sysConfig.getProcessorCheckPeriod()/1000 + "");
paramValues.add(sysConfig.getDataNodeIdleCheckPeriod()/1000 + "");
paramValues.add(sysConfig.getDataNodeHeartbeatPeriod()/1000 + "");
paramValues.add(sysConfig.getBindIp() + "");
paramValues.add(sysConfig.getServerPort()+ "");
paramValues.add(sysConfig.getManagerPort() + "");
for(int i = 0; i < PARAMNAMES.length ; i++){
RowDataPacket row = new RowDataPacket(FIELD_COUNT);
row.add(StringUtil.encode(PARAMNAMES[i], c.getCharset()));
row.add(StringUtil.encode(paramValues.get(i), c.getCharset()));
row.add(StringUtil.encode(PARAM_DESCRIPTION[i], c.getCharset()));
row.packetId = ++packetId;
buffer = row.write(buffer, c,true);
}
// write last eof
EOFPacket lastEof = new EOFPacket();
lastEof.packetId = ++packetId;
buffer = lastEof.write(buffer, c, true);
// write buffer
c.write(buffer);
}
private static final String[] PARAMNAMES = {
"processors",
"processorBufferChunk",
"processorBufferPool",
"processorExecutor",
"sequnceHandlerType",
"Mysql_packetHeaderSize",
"Mysql_maxPacketSize",
"Mysql_idleTimeout",
"Mysql_charset",
"Mysql_txIsolation",
"Mysql_sqlExecuteTimeout",
"Server_processorCheckPeriod",
"Server_dataNodeIdleCheckPeriod",
"Server_dataNodeHeartbeatPeriod",
"Server_bindIp",
"Server_serverPort",
"Server_managerPort"};
private static final String[] PARAM_DESCRIPTION = {
"主要用于指定系统可用的线程数默认值为Runtime.getRuntime().availableProcessors()方法返回的值。主要影响processorBufferPool、processorBufferLocalPercent、processorExecutor属性。NIOProcessor的个数也是由这个属性定义的所以调优的时候可以适当的调高这个属性。",
"指定每次分配Socket Direct Buffer的大小默认是4096个字节。这个属性也影响buffer pool的长度。",
"指定bufferPool计算 比例值。由于每次执行NIO读、写操作都需要使用到buffer系统初始化的时候会建立一定长度的buffer池来加快读、写的效率减少建立buffer的时间",
"主要用于指定NIOProcessor上共享的businessExecutor固定线程池大小。Server在需要处理一些异步逻辑的时候会把任务提交到这个线程池中。新版本中这个连接池的使用频率不是很大了可以设置一个较小的值。",
"指定使用全局序列的类型。",
"指定Mysql协议中的报文头长度。默认4",
"指定Mysql协议可以携带的数据最大长度。默认16M",
"指定连接的空闲超时时间。某连接在发起空闲检查下发现距离上次使用超过了空闲时间那么这个连接会被回收就是被直接的关闭掉。默认30分钟",
"连接的初始化字符集。默认为utf8",
"前端连接的初始化事务隔离级别只在初始化的时候使用后续会根据客户端传递过来的属性对后端数据库连接进行同步。默认为REPEATED_READ",
"SQL执行超时的时间Server会检查连接上最后一次执行SQL的时间若超过这个时间则会直接关闭这连接。默认时间为300秒",
"清理NIOProcessor上前后端空闲、超时和关闭连接的间隔时间。默认是1秒",
"对后端连接进行空闲、超时检查的时间间隔默认是300秒",
"对后端所有读、写库发起心跳的间隔时间默认是10秒",
"服务监听的IP地址默认值为0.0.0.0",
"使用端口默认值为8066",
"管理端口默认值为9066"};
public static final String[] ISOLATIONS = {"", "READ_UNCOMMITTED", "READ_COMMITTED", "REPEATED_READ", "SERIALIZABLE"};
}