已合并
智能运维模块3个模块330版本的代码优化与bugfix #127
Louisyzh创建于 2023年3月15日
智能运维模块3个模块330版本的代码优化与bugfix #127
已合并
Louisyzh创建于 2023年3月15日
master合入到master
9 个文件变更+518-33
@@ -9,24 +9,17 @@ import java.util.concurrent.CountDownLatch;
9import java.util.concurrent.ThreadPoolExecutor;9import java.util.concurrent.ThreadPoolExecutor;
10import java.util.concurrent.TimeUnit;10import java.util.concurrent.TimeUnit;
11 11 
12-import org.apache.commons.lang3.StringUtils;
13import org.springframework.web.bind.annotation.GetMapping;12import org.springframework.web.bind.annotation.GetMapping;
14import org.springframework.web.bind.annotation.PostMapping;13import org.springframework.web.bind.annotation.PostMapping;
15import org.springframework.web.bind.annotation.RequestBody;14import org.springframework.web.bind.annotation.RequestBody;
16import org.springframework.web.bind.annotation.RequestMapping;15import org.springframework.web.bind.annotation.RequestMapping;
17-import org.springframework.web.bind.annotation.RequestParam;
18import org.springframework.web.bind.annotation.RestController;16import org.springframework.web.bind.annotation.RestController;
19 17 
20import com.nctigba.common.web.exception.CustomException;18import com.nctigba.common.web.exception.CustomException;
21import com.nctigba.common.web.result.AppResult;19import com.nctigba.common.web.result.AppResult;
22import com.nctigba.observability.instance.model.monitoring.MonitoringParam;20import com.nctigba.observability.instance.model.monitoring.MonitoringParam;
23-import com.nctigba.observability.instance.pool.SSHPoolManager;
24import com.nctigba.observability.instance.service.MonitoringService;21import com.nctigba.observability.instance.service.MonitoringService;
25-import com.nctigba.observability.instance.service.TopSQLService;
26-import com.nctigba.observability.instance.service.ClusterManager.OpsClusterNodeVOSub;
27-import com.nctigba.observability.instance.util.SSHOperator;
28 22 
29-import cn.hutool.json.JSONObject;
30import lombok.RequiredArgsConstructor;23import lombok.RequiredArgsConstructor;
31 24 
32/**25/**
@@ -40,7 +33,6 @@ import lombok.RequiredArgsConstructor;
40@RequiredArgsConstructor33@RequiredArgsConstructor
41public class MonitoringController {34public class MonitoringController {
42 private final MonitoringService monitoringService;35 private final MonitoringService monitoringService;
43- private final TopSQLService topSQLService;
44 private final ThreadPoolExecutor pool = new ThreadPoolExecutor(10, 50, 60, TimeUnit.SECONDS,36 private final ThreadPoolExecutor pool = new ThreadPoolExecutor(10, 50, 60, TimeUnit.SECONDS,
45 new ArrayBlockingQueue<Runnable>(100));37 new ArrayBlockingQueue<Runnable>(100));
46 38 
@@ -210,17 +202,4 @@ public class MonitoringController {
210 }202 }
211 return AppResult.ok("").addData(map);203 return AppResult.ok("").addData(map);
212 }204 }
213- 205+}
214- @SuppressWarnings("deprecation")
215- @GetMapping(value = "/server")
216- public AppResult process(@RequestParam("id") String id) {
217- OpsClusterNodeVOSub node = topSQLService.clusterNode(id);
218- SSHOperator ssh = SSHPoolManager.getSSHOperator(node.getPrivateIp(), node.getHostPort(), "root",
219- node.getRootPassword());
220- JSONObject o = new JSONObject();
221- o.putOnce("domain", node.getPublicIp() + ":" + node.getDbPort());
222- o.putOnce("process", ssh.executeCommandReturnStr("ps -ef|wc -l"));
223- o.putOnce("minimal", StringUtils.equals(node.getVersion(), "MINIMAL_LIST"));
224- return AppResult.ok("").addData(o);
225- }
226-}
@@ -10,6 +10,7 @@ import com.nctigba.common.web.exception.InstanceException;
10import com.nctigba.observability.instance.dto.param.ParamInfoDTO;10import com.nctigba.observability.instance.dto.param.ParamInfoDTO;
11import com.nctigba.observability.instance.model.param.ParamQuery;11import com.nctigba.observability.instance.model.param.ParamQuery;
12import com.nctigba.observability.instance.service.ParamInfoService;12import com.nctigba.observability.instance.service.ParamInfoService;
13+import com.nctigba.observability.instance.util.MessageSourceUtil;
13 14 
14import lombok.RequiredArgsConstructor;15import lombok.RequiredArgsConstructor;
15 16 
@@ -28,6 +29,7 @@ public class ParamInfoController {
28 29 
29 @GetMapping(value = "/paramInfo")30 @GetMapping(value = "/paramInfo")
30 public List<ParamInfoDTO> paramInfo(ParamQuery paramQuery) {31 public List<ParamInfoDTO> paramInfo(ParamQuery paramQuery) {
32+ MessageSourceUtil.reset();
31 if ("".equals(paramQuery.getNodeId()) || paramQuery.getNodeId() == null) {33 if ("".equals(paramQuery.getNodeId()) || paramQuery.getNodeId() == null) {
32 throw new InstanceException("nodeId is empty!");34 throw new InstanceException("nodeId is empty!");
33 }35 }
@@ -1,6 +1,7 @@
1package com.nctigba.observability.instance.dto.param;1package com.nctigba.observability.instance.dto.param;
2 2 
3import com.nctigba.observability.instance.entity.ParamInfo;3import com.nctigba.observability.instance.entity.ParamInfo;
4+import com.nctigba.observability.instance.util.MessageSourceUtil;
4 5 
5import cn.hutool.core.bean.BeanUtil;6import cn.hutool.core.bean.BeanUtil;
6import lombok.Data;7import lombok.Data;
@@ -12,15 +13,24 @@ public class ParamInfoDTO {
12 private Integer id;13 private Integer id;
13 private String paramType;14 private String paramType;
14 private String paramName;15 private String paramName;
15- private String paramDetail;
16 private String actualValue;16 private String actualValue;
17 private String suggestValue;17 private String suggestValue;
18 private String defaultValue;18 private String defaultValue;
19- private String unit;
20- private String suggestExplain;
21 19 
22 public ParamInfoDTO(ParamInfo info, String actualValue) {20 public ParamInfoDTO(ParamInfo info, String actualValue) {
23 BeanUtil.copyProperties(info, this);21 BeanUtil.copyProperties(info, this);
24 this.actualValue = actualValue;22 this.actualValue = actualValue;
25 }23 }
24+ 
25+ public String getParamDetail() {
26+ return MessageSourceUtil.get(paramType + "." + paramName + ".paramDetail");
27+ }
28+ 
29+ public String getUnit() {
30+ return MessageSourceUtil.get(paramType + "." + paramName + ".unit");
31+ }
32+ 
33+ public String getSuggestExplain() {
34+ return MessageSourceUtil.get(paramType + "." + paramName + ".suggestExplain");
35+ }
26}36}
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
9import com.baomidou.mybatisplus.annotation.TableField;9import com.baomidou.mybatisplus.annotation.TableField;
10import com.baomidou.mybatisplus.annotation.TableId;10import com.baomidou.mybatisplus.annotation.TableId;
11import com.baomidou.mybatisplus.annotation.TableName;11import com.baomidou.mybatisplus.annotation.TableName;
12+ 
12import lombok.Data;13import lombok.Data;
13import lombok.NoArgsConstructor;14import lombok.NoArgsConstructor;
14import lombok.experimental.Accessors;15import lombok.experimental.Accessors;
@@ -24,15 +25,12 @@ public class ParamInfo {
24 type paramType;25 type paramType;
25 @TableField("paramName")26 @TableField("paramName")
26 String paramName;27 String paramName;
27- @TableField("paramDetail")
28 String paramDetail;28 String paramDetail;
29 @TableField("suggestValue")29 @TableField("suggestValue")
30 String suggestValue;30 String suggestValue;
31 @TableField("defaultValue")31 @TableField("defaultValue")
32 String defaultValue;32 String defaultValue;
33- @TableField("unit")
34 String unit;33 String unit;
35- @TableField("suggestExplain")
36 String suggestExplain;34 String suggestExplain;
37 @TableField("diagnosisRule")35 @TableField("diagnosisRule")
38 String diagnosisRule;36 String diagnosisRule;
@@ -49,11 +47,8 @@ public class ParamInfo {
49 info.setId(rs.getInt("id"));47 info.setId(rs.getInt("id"));
50 info.setParamName(rs.getString("paramName"));48 info.setParamName(rs.getString("paramName"));
51 info.setParamType(type.valueOf(rs.getString("paramType")));49 info.setParamType(type.valueOf(rs.getString("paramType")));
52- info.setParamDetail(rs.getString("paramDetail"));
53 info.setSuggestValue(rs.getString("suggestValue"));50 info.setSuggestValue(rs.getString("suggestValue"));
54 info.setDefaultValue(rs.getString("defaultValue"));51 info.setDefaultValue(rs.getString("defaultValue"));
55- info.setUnit(rs.getString("unit"));
56- info.setSuggestExplain(rs.getString("suggestExplain"));
57 list.add(info);52 list.add(info);
58 }53 }
59 return list;54 return list;
@@ -0,0 +1,48 @@
1+package com.nctigba.observability.instance.util;
2+ 
3+import java.util.Locale;
4+ 
5+import javax.servlet.http.HttpServletRequest;
6+ 
7+import org.springframework.beans.factory.annotation.Autowired;
8+import org.springframework.context.MessageSource;
9+import org.springframework.http.HttpHeaders;
10+import org.springframework.stereotype.Component;
11+import org.springframework.web.context.request.RequestContextHolder;
12+import org.springframework.web.context.request.ServletRequestAttributes;
13+ 
14+@Component
15+public class MessageSourceUtil {
16+ private static MessageSource messageSource;
17+ private static final ThreadLocal<Locale> LOC = new ThreadLocal<>();
18+ 
19+ @Autowired
20+ public void setMessageSource(MessageSource messageSource) {
21+ MessageSourceUtil.messageSource = messageSource;
22+ }
23+ 
24+ public static String get(String key) {
25+ return messageSource.getMessage(key, null, key, getLocale());
26+ }
27+ 
28+ public static void reset() {
29+ LOC.remove();
30+ }
31+ 
32+ private static Locale getLocale() {
33+ if(LOC.get()!=null)
34+ return LOC.get();
35+ final HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
36+ .getRequest();
37+ var language = request.getHeader(HttpHeaders.CONTENT_LANGUAGE);
38+ Locale locale;
39+ if (language == null || language.isBlank())
40+ locale = Locale.CHINA;
41+ else {
42+ var str = language.split("_");
43+ locale = new Locale(str[0], str[1]);
44+ }
45+ LOC.set(locale);
46+ return locale;
47+ }
48+}
@@ -0,0 +1,152 @@
1+OS.net.ipv4.tcp_max_tw_buckets.paramDetail=Said while keeping the TIME_WAIT state maximum number of TCP/IP connection. If more than the configured value, TIME_WAIT will be immediately released and print the warning message
2+OS.net.ipv4.tcp_tw_reuse.paramDetail=Allow the TIME - WAIT state sockets for a new TCP connection
3+OS.net.ipv4.tcp_tw_recycle.paramDetail=Said to open a TCP connection in TIME - WAIT state sockets rapid recovery
4+DB.max_process_memory.paramDetail=Set up a database node largest physical memory available
5+DB.work_mem.paramDetail=Job execution judgment may use memory in the footwall operator is influenced by inventory
6+DB.pagewriter_sleep.paramDetail=On the set for incremental checkpoint, pagewrite thread every brush pagewriter_sleep time of a batch of dirty pages footwall. When the proportion of dirty pages occupy shared_buffers reaches dirty_page_percent_max, each batch of pages at a set number of max_io_capacity page to calculate the value of the brush, the rest is less in proportion each batch page number
7+OS.net.ipv4.ip_local_port_range.paramDetail=Physical machine available temporary port range
8+OS.net.ipv4.tcp_keepalive_time.paramDetail=Said when the keepalive enabled, the frequency of the TCP keepalive messages sent
9+OS.net.ipv4.tcp_keepalive_probes.paramDetail=Before that connection failure, send TCP keepalive probe packets. This value multiplied by tcp_keepalive_intvl determines a connection after sending keepalive can have how much time did not respond
10+OS.net.ipv4.tcp_keepalive_intvl.paramDetail=When detecting no confirmation, resend detection frequency
11+OS.net.ipv4.tcp_retries1.paramDetail=In the process of building connection TCP maximum retries
12+OS.net.ipv4.tcp_syn_retries.paramDetail=TCP SYN packet retries
13+OS.net.ipv4.tcp_synack_retries.paramDetail=TCP SYN response packet maximum retries
14+OS.net.ipv4.tcp_retries2.paramDetail=Control the kernel to have establish a connection to the remote host to send data to the number of times
15+OS.vm.overcommit_memory.paramDetail=Control when doing the memory allocation, the kernel checks
16+OS.net.ipv4.tcp_rmem.paramDetail=TCP protocol at the receiving end of the buffer size of available memory
17+OS.net.core.wmem_max.paramDetail=The maximum number of sockets sender buffer size
18+OS.net.core.rmem_max.paramDetail=The maximum number of sockets receiver buffer size
19+OS.net.core.wmem_default.paramDetail=The default value of socket sender buffer size
20+OS.net.core.rmem_default.paramDetail=The default value of the receiver of the socket buffer size
21+OS.kernel.sem.paramDetail=The kernel semaphore parameters set size
22+OS.vm.min_free_kbytes.paramDetail=Ensure that physical memory has enough free space to prevent sudden change page
23+OS.net.core.somaxconn.paramDetail=Defines the system of each port's largest listening to the queue length
24+OS.net.ipv4.tcp_syncookies.paramDetail=When there is a SYN waiting queue overflow, enable the cookies, can prevent a small amount of SYN attacks
25+OS.net.core.netdev_max_backlog.paramDetail=In the rate of each network interface receives packets faster than the rate of kernel processing these packages, to allow the maximum number of packets sent to queue
26+OS.net.ipv4.tcp_max_syn_backlog.paramDetail=Records of those who have not yet received the client confirmation of the maximum number of connection requests
27+OS.net.ipv4.tcp_fin_timeout.paramDetail=The system default timeout
28+OS.kernel.shmall.paramDetail=The kernel of the available amount of Shared memory
29+OS.kernel.shmmax.paramDetail=A maximum of the kernel parameters define a single Shared memory segment
30+OS.net.ipv4.tcp_sack.paramDetail=Enable selective response, by selectively response out-of-order packets to improve performance, get to the sender to send only the missing segments (for wide area network) this option should be enabled, but will increase the CPU
31+OS.net.ipv4.tcp_timestamps.paramDetail=The TCP time stamp (12) will increase in the TCP header, send timeout proportion in a more precise way (see RFC 1323) to enable the RTT calculation, can achieve better performance
32+OS.vm.extfrag_threshold.paramDetail=System memory fails, will the Linux memory fragments score for the current system, if more than the vm extfrag_threshold value, kswapd will trigger the memory compaction. So the value is close to 1000, the system in the processing of memory fragments tend to see the old pages out, for meeting the need of application, and set close to 0, the said system in the processing of memory fragments tend to do the memory compaction
33+OS.vm.overcommit_ratio.paramDetail=System must not be used too much memory algorithm, the system shall not exceed the memory address space swap RAM the percentage value of this parameter, when the vm. The overcommit_memory = 2 when the parameters take effect
34+OS.MTU.paramDetail=The maximum transmission unit node network card. OS the default value is 1500, adjusted to 8192 can improve the performance of SCTP protocol data transceiver
35+DB.bgwriter_delay.paramDetail=Set the write the back-end process "dirty" the time interval between the Shared buffer
36+DB.bgwriter_thread_num.paramDetail=Set the backend process
37+DB.max_io_capacity.paramDetail=Set the back-end process batch brush pages per second IO ceiling, need according to specific business scenarios and disk I/o capability set machine
38+DB.log_min_duration_statement.paramDetail=When the duration of a statement is greater than or equal to the specified number of milliseconds, log_min_duration_statement parameter is used to control the record the duration of each complete statement
39+DB.log_duration.paramDetail=Control each completed record of SQL statement execution time. Extended query protocols are used for the client, will record the syntax analysis, binding, and perform the time spent on each step
40+DB.track_stmt_stat_level.paramDetail=Control statement execution trace level, the parameters in the first part is not OFF, will record all the SQL, the first part is OFF, the second part is a OFF cases, only records the slow SQL
41+DB.track_stmt_retention_time.paramDetail=Combination of parameters, control the quantity/slow SQL record retention time. Read the parameters for 60 seconds period, and perform the cleaning records of more than retention time, only the sysadmin user can access
42+DB.enable_thread_pool.paramDetail=The control function of whether to use a thread pool
43+DB.thread_pool_attr.paramDetail=Detailed attribute is used to control the function of the thread pool, this parameter can only take effect after enable_thread_pool open.
44+DB.log_statement.paramDetail=Control record SQL statements. On extending the query protocols used by the client, record received news events and the value of the binding parameters
45+DB.log_error_verbosity.paramDetail=Control server log write the detailed degree of each record
46+DB.log_min_messages.paramDetail=The message level control to the server log file. Each level contains the information in the row behind it all levels. The lower level, the less the server running log message
47+DB.log_min_error_statement.paramDetail=Control in the SQL server error log.
48+ 
49+OS.net.ipv4.tcp_max_tw_buckets.unit=The number of
50+OS.net.ipv4.tcp_tw_reuse.unit=Boolean value
51+OS.net.ipv4.tcp_tw_recycle.unit=Boolean value
52+DB.max_process_memory.unit=Boolean value
53+DB.work_mem.unit=Boolean value
54+DB.pagewriter_sleep.unit=ms
55+OS.net.ipv4.ip_local_port_range.unit=The number of
56+OS.net.ipv4.tcp_keepalive_time.unit=seconds
57+OS.net.ipv4.tcp_keepalive_probes.unit=seconds
58+OS.net.ipv4.tcp_keepalive_intvl.unit=seconds
59+OS.net.ipv4.tcp_retries1.unit=The number of
60+OS.net.ipv4.tcp_syn_retries.unit=The number of
61+OS.net.ipv4.tcp_synack_retries.unit=The number of
62+OS.net.ipv4.tcp_retries2.unit=The number of
63+OS.vm.overcommit_memory.unit=way
64+OS.net.ipv4.tcp_rmem.unit=byte
65+OS.net.core.wmem_max.unit=byte
66+OS.net.core.rmem_max.unit=byte
67+OS.net.core.wmem_default.unit=byte
68+OS.net.core.rmem_default.unit=byte
69+OS.kernel.sem.unit=byte
70+OS.vm.min_free_kbytes.unit=byte
71+OS.net.core.somaxconn.unit=The number of
72+OS.net.ipv4.tcp_syncookies.unit=Boolean value
73+OS.net.core.netdev_max_backlog.unit=The number of
74+OS.net.ipv4.tcp_max_syn_backlog.unit=The number of
75+OS.net.ipv4.tcp_fin_timeout.unit=seconds
76+OS.kernel.shmall.unit=byte
77+OS.kernel.shmmax.unit=byte
78+OS.net.ipv4.tcp_sack.unit=Boolean value
79+OS.net.ipv4.tcp_timestamps.unit=Boolean value
80+OS.vm.extfrag_threshold.unit=score
81+OS.vm.overcommit_ratio.unit=
82+OS.MTU.unit=byte
83+DB.bgwriter_delay.unit=ms
84+DB.bgwriter_thread_num.unit=The number of
85+DB.max_io_capacity.unit=KB
86+DB.log_min_duration_statement.unit=ms
87+DB.log_duration.unit=Boolean value
88+DB.track_stmt_stat_level.unit=character
89+DB.track_stmt_retention_time.unit=character
90+DB.enable_thread_pool.unit=Boolean value
91+DB.thread_pool_attr.unit=character
92+DB.log_statement.unit=Enumeration type
93+DB.log_error_verbosity.unit=Enumeration type
94+DB.log_min_messages.unit=Enumeration type
95+DB.log_min_error_statement.unit=Enumeration type
96+ 
97+OS.net.ipv4.tcp_max_tw_buckets.suggestExplain=System at the same time the largest processing timewait number of sockets. If more than this number, the time to wait the socket will be immediately axe and display warning information. To set the limit, in order to resist those simple pure DoS attacks, however, if the conditions need to be more than the default value of the network, you can improve it (perhaps even more memory). (in fact do NAT best can appropriately increase the value)
98+OS.net.ipv4.tcp_tw_reuse.suggestExplain=Indicates whether or not allowed to apply in TIME - WAIT state of the socket for the new TCP connection (this to restart some service, quickly and start the prompt after the port is already in use case is helpful)
99+OS.net.ipv4.tcp_tw_recycle.suggestExplain=Open the quick TIME - WAIT sockets. Unless technical expert advice or request, please do not modify this value. (do NAT, suggest to open it)
100+DB.max_process_memory.suggestExplain=Database node on the numerical need according to the system of physical memory and single node deployment master database nodes is decided. Computation formula is as follows: (physical memory size - vm. Min_free_kbytes) \ * 0.7 / (1 master node number). The coefficient of the purpose is to guarantee the reliability of the system as much as possible, not caused by database memory expansion node OOM. The formula mentioned in the vm min_free_kbytes, its meaning is reserved operating system memory used by the kernel, is often used as a communication transceiver in the operating system kernel memory allocation, at least for 5 \ufffd. Namely, max_process_memory = physical memory * 0.665 / (1) master node number
101+DB.work_mem.suggestExplain=Parameter is usually a balance, that is, to ensure the concurrent throughput, and to ensure the Performance of the single query operation, so the need according to the actual implementation (a combination of the Explain output Performance) tuning
102+DB.pagewriter_sleep.suggestExplain=
103+OS.net.ipv4.ip_local_port_range.suggestExplain=Said to outside connection port range, the default is small, this range will also indirectly used for NAT table size
104+OS.net.ipv4.tcp_keepalive_time.suggestExplain=TCP keepalive probe messages sent time interval (in seconds), is used to confirm a TCP connection is valid. But don't send the data to establish the connection on both sides to prevent attacks
105+OS.net.ipv4.tcp_keepalive_probes.suggestExplain=TCP keepalive probe messages sent time interval (in seconds), is used to confirm a TCP connection is valid
106+OS.net.ipv4.tcp_keepalive_intvl.suggestExplain=Detecting messages did not get the response, resend the message time interval (in seconds). The default value is 75 seconds. (for general applications, there are some big, this value can change a little according to need. Especially the web server needs to change small the value, 15 is a more appropriate value)
107+OS.net.ipv4.tcp_retries1.suggestExplain=Give up to respond to a TCP connection request, need to how much time before retrying. The RFC minimum value is 3
108+OS.net.ipv4.tcp_syn_retries.suggestExplain=How much for a new connection, the kernel to send a SYN connection request to decide to give up. Should not be greater than 255, the default value is 5, corresponding to the 180 seconds of time.. (for large load and good physical communication network, this value is high, can be changed to 2. This value is only in view of the external connection, the incoming connection, is determined by tcp_retries1)
109+OS.net.ipv4.tcp_synack_retries.suggestExplain=For remote connection requests the SYN, the kernel sends the SYN + ACK datagram, to confirm a SYN connection request packets received. This is called the three-way handshake (threeway handshake) mechanism of the second step. Here decided to sent by the kernel before giving up connection SYN ACK number. Should not be greater than 255, the default value is 5, corresponding to the 180 seconds of time
110+OS.net.ipv4.tcp_retries2.suggestExplain=Discarding the activation (communication) has been established in TCP connection, need to how much time before retrying. The default value is 15, according to the RTO value to decide, the equivalent of 13-30 minutes (RFC1122 regulation, must be greater than 100 seconds). (this value according to the current network Settings, can be appropriately changed little, I change to 5) within the network
111+"OS.vm.overcommit_memory.suggestExplain=Vm. Overcommit_memory file specifies the kernel for memory allocation strategy, its value is 0, 1, 2
112+0: (default) said the kernel will check whether there is enough memory available supply process; If there is enough memory available, memory applications allow; Otherwise, the memory for failure, and the error is returned to the application process. 0 is heuristic overcommitting handle, will try to reduce the use of the swap, the root can be allocated slightly more memory than the average user
113+1: the kernel allows allocation of all physical memory, however, the current state of the memory, allowing more than CommitLimit, until run out of memory. On the database server is set to 1, is not recommended to try to avoid using the swap.
114+2: said not allowed more than CommitLimit values"
115+OS.net.ipv4.tcp_rmem.suggestExplain=Receive tcp_wmem cache Settings
116+OS.net.core.wmem_max.suggestExplain=Most TCP data buffer
117+OS.net.core.rmem_max.suggestExplain=Most TCP data receiving buffer
118+OS.net.core.wmem_default.suggestExplain=The default send window size
119+OS.net.core.rmem_default.suggestExplain=The default receive window size
120+OS.kernel.sem.suggestExplain=
121+OS.vm.min_free_kbytes.suggestExplain=
122+OS.net.core.somaxconn.suggestExplain=Used to limit the number of listening (LISTEN) biggest packet queue, more than the number of links will lead to a timeout or trigger retransmission mechanism. Listen in the web application function of backlog will give us the kernel by default parameters of the net. Core. Somaxconn limit to 128, and defined nginx NGX_LISTEN_BACKLOG defaults to 511, it is necessary to adjust this value. On a busy server, increasing the value is helpful to network performance
123+OS.net.ipv4.tcp_syncookies.suggestExplain=Only when the kernel compilation occurs when chose CONFIG_SYNCOOKIES role. When there is overflow appeared syn waiting queue syncookies like the other sent. The goal is to prevent the syn flood attack
124+OS.net.core.netdev_max_backlog.suggestExplain=
125+OS.net.ipv4.tcp_max_syn_backlog.suggestExplain=For those who still have not yet received the client confirmation of connection requests, maximum number needs to be saved in the queue. For more than 128 MB of memory system, the default value is 1024, less than 128 MB of 128. If the server is often appear overload, can try to increase the number. Warning! If you see this value is set to greater than 1024, best to modify the include/net/TCP. H TCP_SYNQ_HSIZE inside, to keep TCP_SYNQ_HSIZE * 16 (SYN Flood attack using TCP protocol distribute defects of shaking hands, a false source IP address sends a large number of the TCP SYN - half to open the connection to the target system, eventually leading to the target system Socket queue resources exhausted and can not accept new connections. To cope with this attack, the more widely used in modern Unix systems connected to buffer queue processing way, not to solve this kind of attack, is to use a basic queue processing normal to Connect fully application (the Connect () and the Accept ()), is to use another queue separately store half open the connection. This double queue processing method and some other system kernel measures (such as Syn - Cookies/Caches) joint application, can more effectively relieve small-scale Syn Flood attack (proved)
126+OS.net.ipv4.tcp_fin_timeout.suggestExplain=Disconnect the socket for this end, the TCP remain in a state of FIN - WAIT - 2 time. The other party may be disconnected or has not been end connections or unpredictable process of death
127+OS.kernel.shmall.suggestExplain=
128+OS.kernel.shmmax.suggestExplain=
129+OS.net.ipv4.tcp_sack.suggestExplain=Using Selective ACK, it can be used to find specific lost datagram - so would help to recover quickly. The file said whether to enable Selective response (Selective Acknowledgment), this can be achieved by selectively response out-of-order receives the message to improve performance (this allows the sender to send only the lost packet). (this option should be enabled for wan communication, but it will add to the CPU
130+OS.net.ipv4.tcp_timestamps.suggestExplain=Timestamps in other things, can prevent the forgery of sequence number. A 1 g broadband lines may be met with heavy out - of - line numerical old sequence number (if it is due to last time). Timestamp will make it knows this is a 'old packet. Said (the file is enabled in a more accurate than the timeout retransmission method (RFC 1323) to enable the RTT calculation; In order to achieve better performance should enable this option.)
131+OS.vm.extfrag_threshold.suggestExplain=
132+OS.vm.overcommit_ratio.suggestExplain=The parameter value is only in the vm. Overcommit_memory = 2 cases, this parameter will only take effect
133+OS.MTU.suggestExplain=
134+DB.bgwriter_delay.suggestExplain=In the larger data write pressure can try to reduce the value in the scene in order to reduce the pressure of the checkpoint
135+DB.bgwriter_thread_num.suggestExplain=
136+DB.max_io_capacity.suggestExplain=
137+"DB.log_min_duration_statement.suggestExplain=Set to 250, all run time not shorter than 250 ms SQL statements can be recorded.
138+The duration of the output is set to 0, all statements.
139+Set to 1, close this function"
140+"DB.log_duration.suggestExplain=With this option is set to off, log_min_duration_statement differs log_min_duration_statement record query text.
141+Set to on and log_min_duration_statement greater than zero, record all duration, but only recorded more than threshold value statements. This can be used in high load cases to collect statistics"
142+DB.track_stmt_stat_level.suggestExplain=
143+DB.track_stmt_retention_time.suggestExplain=
144+"DB.enable_thread_pool.suggestExplain=Open thread pool function on said.
145+Off said not unlock the function of the thread pool"
146+DB.thread_pool_attr.suggestExplain=
147+"DB.log_statement.suggestExplain=None said not recorded statements.DDL said record all data definition statements, such as CREATE, ALTER, and DROP statement.
148+Mod said record all DDL statements, including data modification statements INSERT, UPDATE, DELETE, TRUNCATE, and COPY the FROM.
149+All said record all statements, PREPARE, EXECUTE, and EXPLAIN ANALYZE statement also be recorded"
150+DB.log_error_verbosity.suggestExplain=Terse represents output does not include the DETAIL, HINT, records of the QUERY and the CONTEXT error message.Verbose output including SQLSTATE error code, source code file name, the function name and the number of rows in the wrong.Default on behalf of output including the DETAIL, HINT, records of the QUERY and the CONTEXT error messages, not including SQLSTATE error code, source code file name, the function name and the number of rows in the wrong
151+DB.log_min_messages.suggestExplain=\u6709\u6548\u503c\u6709\u8c03\u8bd5\u3001debug5 debug4, debug3, debug2, debug1,\u4fe1\u606f,\u65e5\u5fd7,\u6ce8\u610f,\u8b66\u544a\u3001\u9519\u8bef,\u81f4\u547d\u7684,\u6050\u614c\u3002
152+DB.log_min_error_statement.suggestExplain=\u6709\u6548\u503c\u6709\u8c03\u8bd5\u3001debug5 debug4, debug3, debug2, debug1,\u4fe1\u606f,\u65e5\u5fd7,\u6ce8\u610f,\u8b66\u544a\u3001\u9519\u8bef,\u81f4\u547d\u7684,\u6050\u614c\u3002
@@ -0,0 +1,152 @@
1+OS.net.ipv4.tcp_max_tw_buckets.paramDetail=Said while keeping the TIME_WAIT state maximum number of TCP/IP connection. If more than the configured value, TIME_WAIT will be immediately released and print the warning message
2+OS.net.ipv4.tcp_tw_reuse.paramDetail=Allow the TIME - WAIT state sockets for a new TCP connection
3+OS.net.ipv4.tcp_tw_recycle.paramDetail=Said to open a TCP connection in TIME - WAIT state sockets rapid recovery
4+DB.max_process_memory.paramDetail=Set up a database node largest physical memory available
5+DB.work_mem.paramDetail=Job execution judgment may use memory in the footwall operator is influenced by inventory
6+DB.pagewriter_sleep.paramDetail=On the set for incremental checkpoint, pagewrite thread every brush pagewriter_sleep time of a batch of dirty pages footwall. When the proportion of dirty pages occupy shared_buffers reaches dirty_page_percent_max, each batch of pages at a set number of max_io_capacity page to calculate the value of the brush, the rest is less in proportion each batch page number
7+OS.net.ipv4.ip_local_port_range.paramDetail=Physical machine available temporary port range
8+OS.net.ipv4.tcp_keepalive_time.paramDetail=Said when the keepalive enabled, the frequency of the TCP keepalive messages sent
9+OS.net.ipv4.tcp_keepalive_probes.paramDetail=Before that connection failure, send TCP keepalive probe packets. This value multiplied by tcp_keepalive_intvl determines a connection after sending keepalive can have how much time did not respond
10+OS.net.ipv4.tcp_keepalive_intvl.paramDetail=When detecting no confirmation, resend detection frequency
11+OS.net.ipv4.tcp_retries1.paramDetail=In the process of building connection TCP maximum retries
12+OS.net.ipv4.tcp_syn_retries.paramDetail=TCP SYN packet retries
13+OS.net.ipv4.tcp_synack_retries.paramDetail=TCP SYN response packet maximum retries
14+OS.net.ipv4.tcp_retries2.paramDetail=Control the kernel to have establish a connection to the remote host to send data to the number of times
15+OS.vm.overcommit_memory.paramDetail=Control when doing the memory allocation, the kernel checks
16+OS.net.ipv4.tcp_rmem.paramDetail=TCP protocol at the receiving end of the buffer size of available memory
17+OS.net.core.wmem_max.paramDetail=The maximum number of sockets sender buffer size
18+OS.net.core.rmem_max.paramDetail=The maximum number of sockets receiver buffer size
19+OS.net.core.wmem_default.paramDetail=The default value of socket sender buffer size
20+OS.net.core.rmem_default.paramDetail=The default value of the receiver of the socket buffer size
21+OS.kernel.sem.paramDetail=The kernel semaphore parameters set size
22+OS.vm.min_free_kbytes.paramDetail=Ensure that physical memory has enough free space to prevent sudden change page
23+OS.net.core.somaxconn.paramDetail=Defines the system of each port's largest listening to the queue length
24+OS.net.ipv4.tcp_syncookies.paramDetail=When there is a SYN waiting queue overflow, enable the cookies, can prevent a small amount of SYN attacks
25+OS.net.core.netdev_max_backlog.paramDetail=In the rate of each network interface receives packets faster than the rate of kernel processing these packages, to allow the maximum number of packets sent to queue
26+OS.net.ipv4.tcp_max_syn_backlog.paramDetail=Records of those who have not yet received the client confirmation of the maximum number of connection requests
27+OS.net.ipv4.tcp_fin_timeout.paramDetail=The system default timeout
28+OS.kernel.shmall.paramDetail=The kernel of the available amount of Shared memory
29+OS.kernel.shmmax.paramDetail=A maximum of the kernel parameters define a single Shared memory segment
30+OS.net.ipv4.tcp_sack.paramDetail=Enable selective response, by selectively response out-of-order packets to improve performance, get to the sender to send only the missing segments (for wide area network) this option should be enabled, but will increase the CPU
31+OS.net.ipv4.tcp_timestamps.paramDetail=The TCP time stamp (12) will increase in the TCP header, send timeout proportion in a more precise way (see RFC 1323) to enable the RTT calculation, can achieve better performance
32+OS.vm.extfrag_threshold.paramDetail=System memory fails, will the Linux memory fragments score for the current system, if more than the vm extfrag_threshold value, kswapd will trigger the memory compaction. So the value is close to 1000, the system in the processing of memory fragments tend to see the old pages out, for meeting the need of application, and set close to 0, the said system in the processing of memory fragments tend to do the memory compaction
33+OS.vm.overcommit_ratio.paramDetail=System must not be used too much memory algorithm, the system shall not exceed the memory address space swap RAM the percentage value of this parameter, when the vm. The overcommit_memory = 2 when the parameters take effect
34+OS.MTU.paramDetail=The maximum transmission unit node network card. OS the default value is 1500, adjusted to 8192 can improve the performance of SCTP protocol data transceiver
35+DB.bgwriter_delay.paramDetail=Set the write the back-end process "dirty" the time interval between the Shared buffer
36+DB.bgwriter_thread_num.paramDetail=Set the backend process
37+DB.max_io_capacity.paramDetail=Set the back-end process batch brush pages per second IO ceiling, need according to specific business scenarios and disk I/o capability set machine
38+DB.log_min_duration_statement.paramDetail=When the duration of a statement is greater than or equal to the specified number of milliseconds, log_min_duration_statement parameter is used to control the record the duration of each complete statement
39+DB.log_duration.paramDetail=Control each completed record of SQL statement execution time. Extended query protocols are used for the client, will record the syntax analysis, binding, and perform the time spent on each step
40+DB.track_stmt_stat_level.paramDetail=Control statement execution trace level, the parameters in the first part is not OFF, will record all the SQL, the first part is OFF, the second part is a OFF cases, only records the slow SQL
41+DB.track_stmt_retention_time.paramDetail=Combination of parameters, control the quantity/slow SQL record retention time. Read the parameters for 60 seconds period, and perform the cleaning records of more than retention time, only the sysadmin user can access
42+DB.enable_thread_pool.paramDetail=The control function of whether to use a thread pool
43+DB.thread_pool_attr.paramDetail=Detailed attribute is used to control the function of the thread pool, this parameter can only take effect after enable_thread_pool open.
44+DB.log_statement.paramDetail=Control record SQL statements. On extending the query protocols used by the client, record received news events and the value of the binding parameters
45+DB.log_error_verbosity.paramDetail=Control server log write the detailed degree of each record
46+DB.log_min_messages.paramDetail=The message level control to the server log file. Each level contains the information in the row behind it all levels. The lower level, the less the server running log message
47+DB.log_min_error_statement.paramDetail=Control in the SQL server error log.
48+ 
49+OS.net.ipv4.tcp_max_tw_buckets.unit=The number of
50+OS.net.ipv4.tcp_tw_reuse.unit=Boolean value
51+OS.net.ipv4.tcp_tw_recycle.unit=Boolean value
52+DB.max_process_memory.unit=Boolean value
53+DB.work_mem.unit=Boolean value
54+DB.pagewriter_sleep.unit=ms
55+OS.net.ipv4.ip_local_port_range.unit=The number of
56+OS.net.ipv4.tcp_keepalive_time.unit=seconds
57+OS.net.ipv4.tcp_keepalive_probes.unit=seconds
58+OS.net.ipv4.tcp_keepalive_intvl.unit=seconds
59+OS.net.ipv4.tcp_retries1.unit=The number of
60+OS.net.ipv4.tcp_syn_retries.unit=The number of
61+OS.net.ipv4.tcp_synack_retries.unit=The number of
62+OS.net.ipv4.tcp_retries2.unit=The number of
63+OS.vm.overcommit_memory.unit=way
64+OS.net.ipv4.tcp_rmem.unit=byte
65+OS.net.core.wmem_max.unit=byte
66+OS.net.core.rmem_max.unit=byte
67+OS.net.core.wmem_default.unit=byte
68+OS.net.core.rmem_default.unit=byte
69+OS.kernel.sem.unit=byte
70+OS.vm.min_free_kbytes.unit=byte
71+OS.net.core.somaxconn.unit=The number of
72+OS.net.ipv4.tcp_syncookies.unit=Boolean value
73+OS.net.core.netdev_max_backlog.unit=The number of
74+OS.net.ipv4.tcp_max_syn_backlog.unit=The number of
75+OS.net.ipv4.tcp_fin_timeout.unit=seconds
76+OS.kernel.shmall.unit=byte
77+OS.kernel.shmmax.unit=byte
78+OS.net.ipv4.tcp_sack.unit=Boolean value
79+OS.net.ipv4.tcp_timestamps.unit=Boolean value
80+OS.vm.extfrag_threshold.unit=score
81+OS.vm.overcommit_ratio.unit=
82+OS.MTU.unit=byte
83+DB.bgwriter_delay.unit=ms
84+DB.bgwriter_thread_num.unit=The number of
85+DB.max_io_capacity.unit=KB
86+DB.log_min_duration_statement.unit=ms
87+DB.log_duration.unit=Boolean value
88+DB.track_stmt_stat_level.unit=character
89+DB.track_stmt_retention_time.unit=character
90+DB.enable_thread_pool.unit=Boolean value
91+DB.thread_pool_attr.unit=character
92+DB.log_statement.unit=Enumeration type
93+DB.log_error_verbosity.unit=Enumeration type
94+DB.log_min_messages.unit=Enumeration type
95+DB.log_min_error_statement.unit=Enumeration type
96+ 
97+OS.net.ipv4.tcp_max_tw_buckets.suggestExplain=System at the same time the largest processing timewait number of sockets. If more than this number, the time to wait the socket will be immediately axe and display warning information. To set the limit, in order to resist those simple pure DoS attacks, however, if the conditions need to be more than the default value of the network, you can improve it (perhaps even more memory). (in fact do NAT best can appropriately increase the value)
98+OS.net.ipv4.tcp_tw_reuse.suggestExplain=Indicates whether or not allowed to apply in TIME - WAIT state of the socket for the new TCP connection (this to restart some service, quickly and start the prompt after the port is already in use case is helpful)
99+OS.net.ipv4.tcp_tw_recycle.suggestExplain=Open the quick TIME - WAIT sockets. Unless technical expert advice or request, please do not modify this value. (do NAT, suggest to open it)
100+DB.max_process_memory.suggestExplain=Database node on the numerical need according to the system of physical memory and single node deployment master database nodes is decided. Computation formula is as follows: (physical memory size - vm. Min_free_kbytes) \ * 0.7 / (1 master node number). The coefficient of the purpose is to guarantee the reliability of the system as much as possible, not caused by database memory expansion node OOM. The formula mentioned in the vm min_free_kbytes, its meaning is reserved operating system memory used by the kernel, is often used as a communication transceiver in the operating system kernel memory allocation, at least for 5 \ufffd. Namely, max_process_memory = physical memory * 0.665 / (1) master node number
101+DB.work_mem.suggestExplain=Parameter is usually a balance, that is, to ensure the concurrent throughput, and to ensure the Performance of the single query operation, so the need according to the actual implementation (a combination of the Explain output Performance) tuning
102+DB.pagewriter_sleep.suggestExplain=
103+OS.net.ipv4.ip_local_port_range.suggestExplain=Said to outside connection port range, the default is small, this range will also indirectly used for NAT table size
104+OS.net.ipv4.tcp_keepalive_time.suggestExplain=TCP keepalive probe messages sent time interval (in seconds), is used to confirm a TCP connection is valid. But don't send the data to establish the connection on both sides to prevent attacks
105+OS.net.ipv4.tcp_keepalive_probes.suggestExplain=TCP keepalive probe messages sent time interval (in seconds), is used to confirm a TCP connection is valid
106+OS.net.ipv4.tcp_keepalive_intvl.suggestExplain=Detecting messages did not get the response, resend the message time interval (in seconds). The default value is 75 seconds. (for general applications, there are some big, this value can change a little according to need. Especially the web server needs to change small the value, 15 is a more appropriate value)
107+OS.net.ipv4.tcp_retries1.suggestExplain=Give up to respond to a TCP connection request, need to how much time before retrying. The RFC minimum value is 3
108+OS.net.ipv4.tcp_syn_retries.suggestExplain=How much for a new connection, the kernel to send a SYN connection request to decide to give up. Should not be greater than 255, the default value is 5, corresponding to the 180 seconds of time.. (for large load and good physical communication network, this value is high, can be changed to 2. This value is only in view of the external connection, the incoming connection, is determined by tcp_retries1)
109+OS.net.ipv4.tcp_synack_retries.suggestExplain=For remote connection requests the SYN, the kernel sends the SYN + ACK datagram, to confirm a SYN connection request packets received. This is called the three-way handshake (threeway handshake) mechanism of the second step. Here decided to sent by the kernel before giving up connection SYN ACK number. Should not be greater than 255, the default value is 5, corresponding to the 180 seconds of time
110+OS.net.ipv4.tcp_retries2.suggestExplain=Discarding the activation (communication) has been established in TCP connection, need to how much time before retrying. The default value is 15, according to the RTO value to decide, the equivalent of 13-30 minutes (RFC1122 regulation, must be greater than 100 seconds). (this value according to the current network Settings, can be appropriately changed little, I change to 5) within the network
111+"OS.vm.overcommit_memory.suggestExplain=Vm. Overcommit_memory file specifies the kernel for memory allocation strategy, its value is 0, 1, 2
112+0: (default) said the kernel will check whether there is enough memory available supply process; If there is enough memory available, memory applications allow; Otherwise, the memory for failure, and the error is returned to the application process. 0 is heuristic overcommitting handle, will try to reduce the use of the swap, the root can be allocated slightly more memory than the average user
113+1: the kernel allows allocation of all physical memory, however, the current state of the memory, allowing more than CommitLimit, until run out of memory. On the database server is set to 1, is not recommended to try to avoid using the swap.
114+2: said not allowed more than CommitLimit values"
115+OS.net.ipv4.tcp_rmem.suggestExplain=Receive tcp_wmem cache Settings
116+OS.net.core.wmem_max.suggestExplain=Most TCP data buffer
117+OS.net.core.rmem_max.suggestExplain=Most TCP data receiving buffer
118+OS.net.core.wmem_default.suggestExplain=The default send window size
119+OS.net.core.rmem_default.suggestExplain=The default receive window size
120+OS.kernel.sem.suggestExplain=
121+OS.vm.min_free_kbytes.suggestExplain=
122+OS.net.core.somaxconn.suggestExplain=Used to limit the number of listening (LISTEN) biggest packet queue, more than the number of links will lead to a timeout or trigger retransmission mechanism. Listen in the web application function of backlog will give us the kernel by default parameters of the net. Core. Somaxconn limit to 128, and defined nginx NGX_LISTEN_BACKLOG defaults to 511, it is necessary to adjust this value. On a busy server, increasing the value is helpful to network performance
123+OS.net.ipv4.tcp_syncookies.suggestExplain=Only when the kernel compilation occurs when chose CONFIG_SYNCOOKIES role. When there is overflow appeared syn waiting queue syncookies like the other sent. The goal is to prevent the syn flood attack
124+OS.net.core.netdev_max_backlog.suggestExplain=
125+OS.net.ipv4.tcp_max_syn_backlog.suggestExplain=For those who still have not yet received the client confirmation of connection requests, maximum number needs to be saved in the queue. For more than 128 MB of memory system, the default value is 1024, less than 128 MB of 128. If the server is often appear overload, can try to increase the number. Warning! If you see this value is set to greater than 1024, best to modify the include/net/TCP. H TCP_SYNQ_HSIZE inside, to keep TCP_SYNQ_HSIZE * 16 (SYN Flood attack using TCP protocol distribute defects of shaking hands, a false source IP address sends a large number of the TCP SYN - half to open the connection to the target system, eventually leading to the target system Socket queue resources exhausted and can not accept new connections. To cope with this attack, the more widely used in modern Unix systems connected to buffer queue processing way, not to solve this kind of attack, is to use a basic queue processing normal to Connect fully application (the Connect () and the Accept ()), is to use another queue separately store half open the connection. This double queue processing method and some other system kernel measures (such as Syn - Cookies/Caches) joint application, can more effectively relieve small-scale Syn Flood attack (proved)
126+OS.net.ipv4.tcp_fin_timeout.suggestExplain=Disconnect the socket for this end, the TCP remain in a state of FIN - WAIT - 2 time. The other party may be disconnected or has not been end connections or unpredictable process of death
127+OS.kernel.shmall.suggestExplain=
128+OS.kernel.shmmax.suggestExplain=
129+OS.net.ipv4.tcp_sack.suggestExplain=Using Selective ACK, it can be used to find specific lost datagram - so would help to recover quickly. The file said whether to enable Selective response (Selective Acknowledgment), this can be achieved by selectively response out-of-order receives the message to improve performance (this allows the sender to send only the lost packet). (this option should be enabled for wan communication, but it will add to the CPU
130+OS.net.ipv4.tcp_timestamps.suggestExplain=Timestamps in other things, can prevent the forgery of sequence number. A 1 g broadband lines may be met with heavy out - of - line numerical old sequence number (if it is due to last time). Timestamp will make it knows this is a 'old packet. Said (the file is enabled in a more accurate than the timeout retransmission method (RFC 1323) to enable the RTT calculation; In order to achieve better performance should enable this option.)
131+OS.vm.extfrag_threshold.suggestExplain=
132+OS.vm.overcommit_ratio.suggestExplain=The parameter value is only in the vm. Overcommit_memory = 2 cases, this parameter will only take effect
133+OS.MTU.suggestExplain=
134+DB.bgwriter_delay.suggestExplain=In the larger data write pressure can try to reduce the value in the scene in order to reduce the pressure of the checkpoint
135+DB.bgwriter_thread_num.suggestExplain=
136+DB.max_io_capacity.suggestExplain=
137+"DB.log_min_duration_statement.suggestExplain=Set to 250, all run time not shorter than 250 ms SQL statements can be recorded.
138+The duration of the output is set to 0, all statements.
139+Set to 1, close this function"
140+"DB.log_duration.suggestExplain=With this option is set to off, log_min_duration_statement differs log_min_duration_statement record query text.
141+Set to on and log_min_duration_statement greater than zero, record all duration, but only recorded more than threshold value statements. This can be used in high load cases to collect statistics"
142+DB.track_stmt_stat_level.suggestExplain=
143+DB.track_stmt_retention_time.suggestExplain=
144+"DB.enable_thread_pool.suggestExplain=Open thread pool function on said.
145+Off said not unlock the function of the thread pool"
146+DB.thread_pool_attr.suggestExplain=
147+"DB.log_statement.suggestExplain=None said not recorded statements.DDL said record all data definition statements, such as CREATE, ALTER, and DROP statement.
148+Mod said record all DDL statements, including data modification statements INSERT, UPDATE, DELETE, TRUNCATE, and COPY the FROM.
149+All said record all statements, PREPARE, EXECUTE, and EXPLAIN ANALYZE statement also be recorded"
150+DB.log_error_verbosity.suggestExplain=Terse represents output does not include the DETAIL, HINT, records of the QUERY and the CONTEXT error message.Verbose output including SQLSTATE error code, source code file name, the function name and the number of rows in the wrong.Default on behalf of output including the DETAIL, HINT, records of the QUERY and the CONTEXT error messages, not including SQLSTATE error code, source code file name, the function name and the number of rows in the wrong
151+DB.log_min_messages.suggestExplain=\u6709\u6548\u503c\u6709\u8c03\u8bd5\u3001debug5 debug4, debug3, debug2, debug1,\u4fe1\u606f,\u65e5\u5fd7,\u6ce8\u610f,\u8b66\u544a\u3001\u9519\u8bef,\u81f4\u547d\u7684,\u6050\u614c\u3002
152+DB.log_min_error_statement.suggestExplain=\u6709\u6548\u503c\u6709\u8c03\u8bd5\u3001debug5 debug4, debug3, debug2, debug1,\u4fe1\u606f,\u65e5\u5fd7,\u6ce8\u610f,\u8b66\u544a\u3001\u9519\u8bef,\u81f4\u547d\u7684,\u6050\u614c\u3002
@@ -0,0 +1,147 @@
1+OS.net.ipv4.tcp_max_tw_buckets.paramDetail=\u8868\u793a\u540c\u65f6\u4fdd\u6301TIME_WAIT\u72b6\u6001\u7684TCP/IP\u8fde\u63a5\u6700\u5927\u6570\u91cf\u3002\u5982\u679c\u8d85\u8fc7\u6240\u914d\u7f6e\u7684\u53d6\u503c\uff0cTIME_WAIT\u5c06\u7acb\u523b\u88ab\u91ca\u653e\u5e76\u6253\u5370\u8b66\u544a\u4fe1\u606f
2+OS.net.ipv4.tcp_tw_reuse.paramDetail=\u5141\u8bb8\u5c06TIME-WAIT\u72b6\u6001\u7684sockets\u91cd\u65b0\u7528\u4e8e\u65b0\u7684TCP\u8fde\u63a5
3+OS.net.ipv4.tcp_tw_recycle.paramDetail=\u8868\u793a\u5f00\u542fTCP\u8fde\u63a5\u4e2dTIME-WAIT\u72b6\u6001sockets\u7684\u5feb\u901f\u56de\u6536
4+DB.max_process_memory.paramDetail=\u8bbe\u7f6e\u4e00\u4e2a\u6570\u636e\u5e93\u8282\u70b9\u53ef\u7528\u7684\u6700\u5927\u7269\u7406\u5185\u5b58
5+DB.work_mem.paramDetail=\u5224\u65ad\u6267\u884c\u4f5c\u4e1a\u53ef\u4e0b\u76d8\u7b97\u5b50\u662f\u5426\u5df2\u4f7f\u7528\u5185\u5b58\u91cf\u89e6\u53d1\u4e0b\u76d8\u70b9
6+DB.pagewriter_sleep.paramDetail=\u8bbe\u7f6e\u7528\u4e8e\u589e\u91cf\u68c0\u67e5\u70b9\u6253\u5f00\u540e\uff0cpagewrite\u7ebf\u7a0b\u6bcf\u9694pagewriter_sleep\u7684\u65f6\u95f4\u5237\u4e00\u6279\u810f\u9875\u4e0b\u76d8\u3002\u5f53\u810f\u9875\u5360\u636eshared_buffers\u7684\u6bd4\u4f8b\u8fbe\u5230dirty_page_percent_max\u65f6\uff0c\u6bcf\u6279\u9875\u9762\u6570\u91cf\u4ee5\u8bbe\u5b9a\u7684max_io_capacity\u8ba1\u7b97\u51fa\u7684\u503c\u5237\u9875\uff0c\u5176\u4f59\u60c5\u51b5\u6bcf\u6279\u9875\u9762\u6570\u91cf\u6309\u6bd4\u4f8b\u76f8\u5bf9\u51cf\u5c11
7+OS.net.ipv4.ip_local_port_range.paramDetail=\u7269\u7406\u673a\u53ef\u7528\u4e34\u65f6\u7aef\u53e3\u8303\u56f4
8+OS.net.ipv4.tcp_keepalive_time.paramDetail=\u8868\u793a\u5f53keepalive\u542f\u7528\u7684\u65f6\u5019\uff0cTCP\u53d1\u9001keepalive\u6d88\u606f\u7684\u9891\u5ea6
9+OS.net.ipv4.tcp_keepalive_probes.paramDetail=\u5728\u8ba4\u5b9a\u8fde\u63a5\u5931\u6548\u4e4b\u524d\uff0c\u53d1\u9001TCP\u7684keepalive\u63a2\u6d4b\u5305\u6570\u91cf\u3002\u8fd9\u4e2a\u503c\u4e58\u4ee5tcp_keepalive_intvl\u4e4b\u540e\u51b3\u5b9a\u4e86\u4e00\u4e2a\u8fde\u63a5\u53d1\u9001\u4e86keepalive\u4e4b\u540e\u53ef\u4ee5\u6709\u591a\u5c11\u65f6\u95f4\u6ca1\u6709\u56de\u5e94
10+OS.net.ipv4.tcp_keepalive_intvl.paramDetail=\u5f53\u63a2\u6d4b\u6ca1\u6709\u786e\u8ba4\u65f6\uff0c\u91cd\u65b0\u53d1\u9001\u63a2\u6d4b\u7684\u9891\u5ea6
11+OS.net.ipv4.tcp_retries1.paramDetail=\u5728\u8fde\u63a5\u5efa\u7acb\u8fc7\u7a0b\u4e2dTCP\u534f\u8bae\u6700\u5927\u91cd\u8bd5\u6b21\u6570
12+OS.net.ipv4.tcp_syn_retries.paramDetail=TCP\u534f\u8baeSYN\u62a5\u6587\u6700\u5927\u91cd\u8bd5\u6b21\u6570
13+OS.net.ipv4.tcp_synack_retries.paramDetail=TCP\u534f\u8baeSYN\u5e94\u7b54\u62a5\u6587\u6700\u5927\u91cd\u8bd5\u6b21\u6570
14+OS.net.ipv4.tcp_retries2.paramDetail=\u63a7\u5236\u5185\u6838\u5411\u5df2\u7ecf\u5efa\u7acb\u8fde\u63a5\u7684\u8fdc\u7a0b\u4e3b\u673a\u91cd\u65b0\u53d1\u9001\u6570\u636e\u7684\u6b21\u6570
15+OS.vm.overcommit_memory.paramDetail=\u63a7\u5236\u5728\u505a\u5185\u5b58\u5206\u914d\u7684\u65f6\u5019\uff0c\u5185\u6838\u7684\u68c0\u67e5\u65b9\u5f0f
16+OS.net.ipv4.tcp_rmem.paramDetail=TCP\u534f\u8bae\u63a5\u6536\u7aef\u7f13\u51b2\u533a\u7684\u53ef\u7528\u5185\u5b58\u5927\u5c0f
17+OS.net.core.wmem_max.paramDetail=socket\u53d1\u9001\u7aef\u7f13\u51b2\u533a\u5927\u5c0f\u7684\u6700\u5927\u503c
18+OS.net.core.rmem_max.paramDetail=socket\u63a5\u6536\u7aef\u7f13\u51b2\u533a\u5927\u5c0f\u7684\u6700\u5927\u503c
19+OS.net.core.wmem_default.paramDetail=socket\u53d1\u9001\u7aef\u7f13\u51b2\u533a\u5927\u5c0f\u7684\u9ed8\u8ba4\u503c
20+OS.net.core.rmem_default.paramDetail=socket\u63a5\u6536\u7aef\u7f13\u51b2\u533a\u5927\u5c0f\u7684\u9ed8\u8ba4\u503c
21+OS.kernel.sem.paramDetail=\u5185\u6838\u4fe1\u53f7\u91cf\u53c2\u6570\u8bbe\u7f6e\u5927\u5c0f
22+OS.vm.min_free_kbytes.paramDetail=\u4fdd\u8bc1\u7269\u7406\u5185\u5b58\u6709\u8db3\u591f\u7a7a\u95f2\u7a7a\u95f4\uff0c\u9632\u6b62\u7a81\u53d1\u6027\u6362\u9875
23+OS.net.core.somaxconn.paramDetail=\u5b9a\u4e49\u4e86\u7cfb\u7edf\u4e2d\u6bcf\u4e00\u4e2a\u7aef\u53e3\u6700\u5927\u7684\u76d1\u542c\u961f\u5217\u7684\u957f\u5ea6
24+OS.net.ipv4.tcp_syncookies.paramDetail=\u5f53\u51fa\u73b0SYN\u7b49\u5f85\u961f\u5217\u6ea2\u51fa\u65f6\uff0c\u542f\u7528cookies\u6765\u5904\u7406\uff0c\u53ef\u9632\u8303\u5c11\u91cfSYN\u653b\u51fb
25+OS.net.core.netdev_max_backlog.paramDetail=\u5728\u6bcf\u4e2a\u7f51\u7edc\u63a5\u53e3\u63a5\u6536\u6570\u636e\u5305\u7684\u901f\u7387\u6bd4\u5185\u6838\u5904\u7406\u8fd9\u4e9b\u5305\u7684\u901f\u7387\u5feb\u65f6\uff0c\u5141\u8bb8\u9001\u5230\u961f\u5217\u7684\u6570\u636e\u5305\u7684\u6700\u5927\u6570\u76ee
26+OS.net.ipv4.tcp_max_syn_backlog.paramDetail=\u8bb0\u5f55\u7684\u90a3\u4e9b\u5c1a\u672a\u6536\u5230\u5ba2\u6237\u7aef\u786e\u8ba4\u4fe1\u606f\u7684\u8fde\u63a5\u8bf7\u6c42\u7684\u6700\u5927\u503c
27+OS.net.ipv4.tcp_fin_timeout.paramDetail=\u7cfb\u7edf\u9ed8\u8ba4\u7684\u8d85\u65f6\u65f6\u95f4
28+OS.kernel.shmall.paramDetail=\u5185\u6838\u53ef\u7528\u7684\u5171\u4eab\u5185\u5b58\u603b\u91cf
29+OS.kernel.shmmax.paramDetail=\u5185\u6838\u53c2\u6570\u5b9a\u4e49\u5355\u4e2a\u5171\u4eab\u5185\u5b58\u6bb5\u7684\u6700\u5927\u503c
30+OS.net.ipv4.tcp_sack.paramDetail=\u542f\u7528\u6709\u9009\u62e9\u7684\u5e94\u7b54\uff0c\u901a\u8fc7\u6709\u9009\u62e9\u5730\u5e94\u7b54\u4e71\u5e8f\u63a5\u53d7\u5230\u7684\u62a5\u6587\u6765\u63d0\u9ad8\u6027\u80fd\uff0c\u8ba9\u53d1\u9001\u8005\u53ea\u53d1\u9001\u4e22\u5931\u7684\u62a5\u6587\u6bb5\uff08\u5bf9\u4e8e\u5e7f\u57df\u7f51\u6765\u8bf4\uff09\u8fd9\u4e2a\u9009\u9879\u5e94\u8be5\u542f\u7528\uff0c\u4f46\u662f\u4f1a\u589e\u52a0\u5bf9CPU\u7684\u5360\u7528
31+OS.net.ipv4.tcp_timestamps.paramDetail=TCP\u65f6\u95f4\u6233\uff08\u4f1a\u5728TCP\u5305\u5934\u589e\u52a012\u8282\uff09\uff0c\u4ee5\u4e00\u79cd\u6bd4\u91cd\u53d1\u8d85\u65f6\u66f4\u7cbe\u786e\u7684\u65b9\u5f0f\uff08\u53c2\u8003RFC 1323\uff09\u6765\u542f\u7528\u5bf9RTT\u7684\u8ba1\u7b97\uff0c\u542f\u7528\u53ef\u4ee5\u5b9e\u73b0\u66f4\u597d\u7684\u6027\u80fd
32+OS.vm.extfrag_threshold.paramDetail=\u7cfb\u7edf\u5185\u5b58\u4e0d\u591f\u7528\u65f6\uff0clinux\u4f1a\u4e3a\u5f53\u524d\u7cfb\u7edf\u5185\u5b58\u788e\u7247\u60c5\u51b5\u6253\u5206\uff0c\u5982\u679c\u8d85\u8fc7vm.extfrag_threshold\u7684\u503c\uff0ckswapd\u5c31\u4f1a\u89e6\u53d1memory compaction\u3002\u6240\u4ee5\u8fd9\u4e2a\u503c\u8bbe\u7f6e\u7684\u63a5\u8fd11000\uff0c\u8bf4\u660e\u7cfb\u7edf\u5728\u5185\u5b58\u788e\u7247\u7684\u5904\u7406\u503e\u5411\u4e8e\u628a\u65e7\u7684\u9875\u6362\u51fa\uff0c\u4ee5\u7b26\u5408\u7533\u8bf7\u7684\u9700\u8981\uff0c\u800c\u8bbe\u7f6e\u63a5\u8fd10\uff0c\u8868\u793a\u7cfb\u7edf\u5728\u5185\u5b58\u788e\u7247\u7684\u5904\u7406\u503e\u5411\u505amemory compaction
33+OS.vm.overcommit_ratio.paramDetail=\u7cfb\u7edf\u4f7f\u7528\u7edd\u4e0d\u8fc7\u91cf\u4f7f\u7528\u5185\u5b58\u7684\u7b97\u6cd5\u65f6\uff0c\u7cfb\u7edf\u6574\u4e2a\u5185\u5b58\u5730\u5740\u7a7a\u95f4\u4e0d\u5f97\u8d85\u8fc7swap+RAM\u503c\u7684\u6b64\u53c2\u6570\u767e\u5206\u6bd4\uff0c\u5f53vm.overcommit_memory=2\u65f6\u6b64\u53c2\u6570\u751f\u6548
34+OS.MTU.paramDetail=\u8282\u70b9\u7f51\u5361\u6700\u5927\u4f20\u8f93\u5355\u5143\u3002OS\u9ed8\u8ba4\u503c\u4e3a1500\uff0c\u8c03\u6574\u4e3a8192\u53ef\u4ee5\u63d0\u5347SCTP\u534f\u8bae\u6570\u636e\u6536\u53d1\u7684\u6027\u80fd
35+DB.bgwriter_delay.paramDetail=\u8bbe\u7f6e\u540e\u7aef\u5199\u8fdb\u7a0b\u5199\u201c\u810f\u201d\u5171\u4eab\u7f13\u51b2\u533a\u4e4b\u95f4\u7684\u65f6\u95f4\u95f4\u9694
36+DB.bgwriter_thread_num.paramDetail=\u8bbe\u7f6e\u540e\u7aef\u5199\u8fdb\u7a0b\u6570\u91cf
37+DB.max_io_capacity.paramDetail=\u8bbe\u7f6e\u540e\u7aef\u5199\u8fdb\u7a0b\u6279\u91cf\u5237\u9875\u6bcf\u79d2\u7684IO\u4e0a\u9650\uff0c\u9700\u8981\u6839\u636e\u5177\u4f53\u4e1a\u52a1\u573a\u666f\u548c\u673a\u5668\u78c1\u76d8IO\u80fd\u529b\u8fdb\u884c\u8bbe\u7f6e
38+DB.log_min_duration_statement.paramDetail=\u5f53\u67d0\u6761\u8bed\u53e5\u7684\u6301\u7eed\u65f6\u95f4\u5927\u4e8e\u6216\u8005\u7b49\u4e8e\u7279\u5b9a\u7684\u6beb\u79d2\u6570\u65f6\uff0clog_min_duration_statement\u53c2\u6570\u7528\u4e8e\u63a7\u5236\u8bb0\u5f55\u6bcf\u6761\u5b8c\u6210\u8bed\u53e5\u7684\u6301\u7eed\u65f6\u95f4
39+DB.log_duration.paramDetail=\u63a7\u5236\u8bb0\u5f55\u6bcf\u4e2a\u5df2\u5b8c\u6210SQL\u8bed\u53e5\u7684\u6267\u884c\u65f6\u95f4\u3002\u5bf9\u4f7f\u7528\u6269\u5c55\u67e5\u8be2\u534f\u8bae\u7684\u5ba2\u6237\u7aef\u3001\u4f1a\u8bb0\u5f55\u8bed\u6cd5\u5206\u6790\u3001\u7ed1\u5b9a\u548c\u6267\u884c\u6bcf\u4e00\u6b65\u6240\u82b1\u8d39\u7684\u65f6\u95f4
40+DB.track_stmt_stat_level.paramDetail=\u63a7\u5236\u8bed\u53e5\u6267\u884c\u8ddf\u8e2a\u7684\u7ea7\u522b,\u53c2\u6570\u7b2c\u4e00\u90e8\u5206\u4e3a\u975eOFF\u60c5\u51b5\u4e0b\uff0c\u4f1a\u8bb0\u5f55\u6240\u6709SQL\uff0c\u7b2c\u4e00\u90e8\u5206\u4e3aOFF\uff0c\u7b2c\u4e8c\u90e8\u5206\u4e3a\u975eOFF\u60c5\u51b5\u4e0b\uff0c\u4ec5\u8bb0\u5f55\u6162SQL
41+DB.track_stmt_retention_time.paramDetail=\u7ec4\u5408\u53c2\u6570\uff0c\u63a7\u5236\u5168\u91cf/\u6162SQL\u8bb0\u5f55\u7684\u4fdd\u7559\u65f6\u95f4\u3002\u4ee560\u79d2\u4e3a\u5468\u671f\u8bfb\u53d6\u8be5\u53c2\u6570\uff0c\u5e76\u6267\u884c\u6e05\u7406\u8d85\u8fc7\u4fdd\u7559\u65f6\u95f4\u7684\u8bb0\u5f55\uff0c\u4ec5sysadmin\u7528\u6237\u53ef\u4ee5\u8bbf\u95ee
42+DB.enable_thread_pool.paramDetail=\u63a7\u5236\u662f\u5426\u4f7f\u7528\u7ebf\u7a0b\u6c60\u529f\u80fd
43+DB.thread_pool_attr.paramDetail=\u7528\u4e8e\u63a7\u5236\u7ebf\u7a0b\u6c60\u529f\u80fd\u7684\u8be6\u7ec6\u5c5e\u6027\uff0c\u8be5\u53c2\u6570\u4ec5\u5728enable_thread_pool\u6253\u5f00\u540e\u751f\u6548\u3002
44+DB.log_statement.paramDetail=\u63a7\u5236\u8bb0\u5f55SQL\u8bed\u53e5\u3002\u5bf9\u4e8e\u4f7f\u7528\u6269\u5c55\u67e5\u8be2\u534f\u8bae\u7684\u5ba2\u6237\u7aef\uff0c\u8bb0\u5f55\u63a5\u6536\u5230\u6267\u884c\u6d88\u606f\u7684\u4e8b\u4ef6\u548c\u7ed1\u5b9a\u53c2\u6570\u7684\u503c
45+DB.log_error_verbosity.paramDetail=\u63a7\u5236\u670d\u52a1\u5668\u65e5\u5fd7\u4e2d\u6bcf\u6761\u8bb0\u5f55\u7684\u6d88\u606f\u5199\u5165\u7684\u8be6\u7ec6\u5ea6
46+DB.log_min_messages.paramDetail=\u63a7\u5236\u5199\u5230\u670d\u52a1\u5668\u65e5\u5fd7\u6587\u4ef6\u4e2d\u7684\u6d88\u606f\u7ea7\u522b\u3002\u6bcf\u4e2a\u7ea7\u522b\u90fd\u5305\u542b\u6392\u5728\u5b83\u540e\u9762\u7684\u6240\u6709\u7ea7\u522b\u4e2d\u7684\u4fe1\u606f\u3002\u7ea7\u522b\u8d8a\u4f4e\uff0c\u670d\u52a1\u5668\u8fd0\u884c\u65e5\u5fd7\u4e2d\u8bb0\u5f55\u7684\u6d88\u606f\u5c31\u8d8a\u5c11
47+DB.log_min_error_statement.paramDetail=\u63a7\u5236\u5728\u670d\u52a1\u5668\u65e5\u5fd7\u4e2d\u8bb0\u5f55\u9519\u8bef\u7684SQL\u8bed\u53e5\u3002
48+ 
49+OS.net.ipv4.tcp_max_tw_buckets.unit=\u6570\u76ee
50+OS.net.ipv4.tcp_tw_reuse.unit=\u5e03\u5c14\u503c
51+OS.net.ipv4.tcp_tw_recycle.unit=\u5e03\u5c14\u503c
52+DB.max_process_memory.unit=\u5e03\u5c14\u503c
53+DB.work_mem.unit=\u5e03\u5c14\u503c
54+DB.pagewriter_sleep.unit=ms
55+OS.net.ipv4.ip_local_port_range.unit=\u6570\u76ee
56+OS.net.ipv4.tcp_keepalive_time.unit=\u79d2
57+OS.net.ipv4.tcp_keepalive_probes.unit=\u79d2
58+OS.net.ipv4.tcp_keepalive_intvl.unit=\u79d2
59+OS.net.ipv4.tcp_retries1.unit=\u6b21\u6570
60+OS.net.ipv4.tcp_syn_retries.unit=\u6b21\u6570
61+OS.net.ipv4.tcp_synack_retries.unit=\u6b21\u6570
62+OS.net.ipv4.tcp_retries2.unit=\u6b21\u6570
63+OS.vm.overcommit_memory.unit=\u65b9\u5f0f
64+OS.net.ipv4.tcp_rmem.unit=\u5b57\u8282
65+OS.net.core.wmem_max.unit=\u5b57\u8282
66+OS.net.core.rmem_max.unit=\u5b57\u8282
67+OS.net.core.wmem_default.unit=\u5b57\u8282
68+OS.net.core.rmem_default.unit=\u5b57\u8282
69+OS.kernel.sem.unit=\u5b57\u8282
70+OS.vm.min_free_kbytes.unit=\u5b57\u8282
71+OS.net.core.somaxconn.unit=\u4e2a\u6570
72+OS.net.ipv4.tcp_syncookies.unit=\u5e03\u5c14\u503c
73+OS.net.core.netdev_max_backlog.unit=\u4e2a\u6570
74+OS.net.ipv4.tcp_max_syn_backlog.unit=\u4e2a\u6570
75+OS.net.ipv4.tcp_fin_timeout.unit=\u79d2
76+OS.kernel.shmall.unit=\u5b57\u8282
77+OS.kernel.shmmax.unit=\u5b57\u8282
78+OS.net.ipv4.tcp_sack.unit=\u5e03\u5c14\u503c
79+OS.net.ipv4.tcp_timestamps.unit=\u5e03\u5c14\u503c
80+OS.vm.extfrag_threshold.unit=\u5206\u503c
81+OS.vm.overcommit_ratio.unit=%
82+OS.MTU.unit=\u5b57\u8282
83+DB.bgwriter_delay.unit=\u6beb\u79d2
84+DB.bgwriter_thread_num.unit=\u4e2a\u6570
85+DB.max_io_capacity.unit=KB
86+DB.log_min_duration_statement.unit=\u6beb\u79d2
87+DB.log_duration.unit=\u5e03\u5c14\u503c
88+DB.track_stmt_stat_level.unit=\u5b57\u7b26\u578b
89+DB.track_stmt_retention_time.unit=\u5b57\u7b26\u578b
90+DB.enable_thread_pool.unit=\u5e03\u5c14\u503c
91+DB.thread_pool_attr.unit=\u5b57\u7b26\u578b
92+DB.log_statement.unit=\u679a\u4e3e\u578b
93+DB.log_error_verbosity.unit=\u679a\u4e3e\u578b
94+DB.log_min_messages.unit=\u679a\u4e3e\u578b
95+DB.log_min_error_statement.unit=\u679a\u4e3e\u578b
96+ 
97+OS.net.ipv4.tcp_max_tw_buckets.suggestExplain=\u7cfb\u7edf\u5728\u540c\u65f6\u6240\u5904\u7406\u7684\u6700\u5927 timewait sockets \u6570\u76ee\u3002\u5982\u679c\u8d85\u8fc7\u6b64\u6570\u7684\u8bdd\ufe50time-wait socket \u4f1a\u88ab\u7acb\u5373\u780d\u9664\u5e76\u4e14\u663e\u793a\u8b66\u544a\u4fe1\u606f\u3002\u4e4b\u6240\u4ee5\u8981\u8bbe\u5b9a\u8fd9\u4e2a\u9650\u5236\ufe50\u7eaf\u7cb9\u4e3a\u4e86\u62b5\u5fa1\u90a3\u4e9b\u7b80\u5355\u7684 DoS \u653b\u51fb\ufe50\u4e0d\u8fc7\ufe50\u5982\u679c\u7f51\u7edc\u6761\u4ef6\u9700\u8981\u6bd4\u9ed8\u8ba4\u503c\u66f4\u591a\ufe50\u5219\u53ef\u4ee5\u63d0\u9ad8\u5b83(\u6216\u8bb8\u8fd8\u8981\u589e\u52a0\u5185\u5b58)\u3002(\u4e8b\u5b9e\u4e0a\u505aNAT\u7684\u65f6\u5019\u6700\u597d\u53ef\u4ee5\u9002\u5f53\u5730\u589e\u52a0\u8be5\u503c)
98+OS.net.ipv4.tcp_tw_reuse.suggestExplain=\u8868\u793a\u662f\u5426\u5141\u8bb8\u91cd\u65b0\u5e94\u7528\u5904\u4e8eTIME- WAIT\u72b6\u6001\u7684socket\u7528\u4e8e\u65b0\u7684TCP\u8fde\u63a5(\u8fd9\u4e2a\u5bf9\u5feb\u901f\u91cd\u542f\u52a8\u67d0\u4e9b\u670d\u52a1,\u800c\u542f\u52a8\u540e\u63d0\u793a\u7aef\u53e3\u5df2\u7ecf\u88ab\u4f7f\u7528\u7684\u60c5\u5f62\u975e\u5e38\u6709\u5e2e\u52a9)
99+OS.net.ipv4.tcp_tw_recycle.suggestExplain=\u6253\u5f00\u5feb\u901f TIME-WAIT sockets \u56de\u6536\u3002\u9664\u975e\u5f97\u5230\u6280\u672f\u4e13\u5bb6\u7684\u5efa\u8bae\u6216\u8981\u6c42\ufe50\u8bf7\u4e0d\u8981\u968f\u610f\u4fee\u6539\u8fd9\u4e2a\u503c\u3002(\u505aNAT\u7684\u65f6\u5019\uff0c\u5efa\u8bae\u6253\u5f00\u5b83)
100+DB.max_process_memory.suggestExplain=\u6570\u636e\u5e93\u8282\u70b9\u4e0a\u8be5\u6570\u503c\u9700\u8981\u6839\u636e\u7cfb\u7edf\u7269\u7406\u5185\u5b58\u53ca\u5355\u8282\u70b9\u90e8\u7f72\u4e3b\u6570\u636e\u5e93\u8282\u70b9\u4e2a\u6570\u51b3\u5b9a\u3002\u5efa\u8bae\u8ba1\u7b97\u516c\u5f0f\u5982\u4e0b\uff1a(\u7269\u7406\u5185\u5b58\u5927\u5c0f - vm.min_free_kbytes) \* 0.7 / (1 + \u4e3b\u8282\u70b9\u4e2a\u6570)\u3002\u8be5\u7cfb\u6570\u7684\u76ee\u7684\u662f\u5c3d\u53ef\u80fd\u4fdd\u8bc1\u7cfb\u7edf\u7684\u53ef\u9760\u6027\uff0c\u4e0d\u4f1a\u56e0\u6570\u636e\u5e93\u5185\u5b58\u81a8\u80c0\u5bfc\u81f4\u8282\u70b9OOM\u3002\u8fd9\u4e2a\u516c\u5f0f\u4e2d\u63d0\u5230vm.min_free_kbytes\uff0c\u5176\u542b\u4e49\u662f\u9884\u7559\u64cd\u4f5c\u7cfb\u7edf\u5185\u5b58\u4f9b\u5185\u6838\u4f7f\u7528\uff0c\u901a\u5e38\u7528\u4f5c\u64cd\u4f5c\u7cfb\u7edf\u5185\u6838\u4e2d\u901a\u4fe1\u6536\u53d1\u5185\u5b58\u5206\u914d\uff0c\u81f3\u5c11\u4e3a5%\u5185\u5b58\u3002\u5373\uff0cmax_process_memory = \u7269\u7406\u5185\u5b58 * 0.665 / (1 + \u4e3b\u8282\u70b9\u4e2a\u6570)
101+DB.work_mem.suggestExplain=\u53c2\u6570\u8bbe\u7f6e\u901a\u5e38\u662f\u4e00\u4e2a\u6743\u8861\uff0c\u5373\u8981\u4fdd\u8bc1\u5e76\u53d1\u7684\u541e\u5410\u91cf\uff0c\u53c8\u8981\u4fdd\u8bc1\u5355\u67e5\u8be2\u4f5c\u4e1a\u7684\u6027\u80fd\uff0c\u6545\u9700\u8981\u6839\u636e\u5b9e\u9645\u6267\u884c\u60c5\u51b5\uff08\u7ed3\u5408Explain Performance\u8f93\u51fa\uff09\u8fdb\u884c\u8c03\u4f18
102+DB.pagewriter_sleep.suggestExplain=
103+OS.net.ipv4.ip_local_port_range.suggestExplain=\u8868\u793a\u7528\u4e8e\u5411\u5916\u8fde\u63a5\u7684\u7aef\u53e3\u8303\u56f4\uff0c\u9ed8\u8ba4\u6bd4\u8f83\u5c0f\uff0c\u8fd9\u4e2a\u8303\u56f4\u540c\u6837\u4f1a\u95f4\u63a5\u7528\u4e8eNAT\u8868\u89c4\u6a21
104+OS.net.ipv4.tcp_keepalive_time.suggestExplain=TCP\u53d1\u9001keepalive\u63a2\u6d4b\u6d88\u606f\u7684\u95f4\u9694\u65f6\u95f4\uff08\u79d2\uff09\uff0c\u7528\u4e8e\u786e\u8ba4TCP\u8fde\u63a5\u662f\u5426\u6709\u6548\u3002\u9632\u6b62\u4e24\u8fb9\u5efa\u7acb\u8fde\u63a5\u4f46\u4e0d\u53d1\u9001\u6570\u636e\u7684\u653b\u51fb
105+OS.net.ipv4.tcp_keepalive_probes.suggestExplain=TCP\u53d1\u9001keepalive\u63a2\u6d4b\u6d88\u606f\u7684\u95f4\u9694\u65f6\u95f4\uff08\u79d2\uff09\uff0c\u7528\u4e8e\u786e\u8ba4TCP\u8fde\u63a5\u662f\u5426\u6709\u6548
106+OS.net.ipv4.tcp_keepalive_intvl.suggestExplain=\u63a2\u6d4b\u6d88\u606f\u672a\u83b7\u5f97\u54cd\u5e94\u65f6\uff0c\u91cd\u53d1\u8be5\u6d88\u606f\u7684\u95f4\u9694\u65f6\u95f4\uff08\u79d2\uff09\u3002\u9ed8\u8ba4\u503c\u4e3a75\u79d2\u3002 (\u5bf9\u4e8e\u666e\u901a\u5e94\u7528\u6765\u8bf4,\u8fd9\u4e2a\u503c\u6709\u4e00\u4e9b\u504f\u5927,\u53ef\u4ee5\u6839\u636e\u9700\u8981\u6539\u5c0f.\u7279\u522b\u662fweb\u7c7b\u670d\u52a1\u5668\u9700\u8981\u6539\u5c0f\u8be5\u503c,15\u662f\u4e2a\u6bd4\u8f83\u5408\u9002\u7684\u503c)
107+OS.net.ipv4.tcp_retries1.suggestExplain=\u653e\u5f03\u56de\u5e94\u4e00\u4e2aTCP\u8fde\u63a5\u8bf7\u6c42\u524d\ufe50\u9700\u8981\u8fdb\u884c\u591a\u5c11\u6b21\u91cd\u8bd5\u3002RFC\u89c4\u5b9a\u6700\u4f4e\u7684\u6570\u503c\u662f3
108+OS.net.ipv4.tcp_syn_retries.suggestExplain=\u5bf9\u4e8e\u4e00\u4e2a\u65b0\u5efa\u8fde\u63a5\uff0c\u5185\u6838\u8981\u53d1\u9001\u591a\u5c11\u4e2a SYN \u8fde\u63a5\u8bf7\u6c42\u624d\u51b3\u5b9a\u653e\u5f03\u3002\u4e0d\u5e94\u8be5\u5927\u4e8e255\uff0c\u9ed8\u8ba4\u503c\u662f5\uff0c\u5bf9\u5e94\u4e8e180\u79d2\u5de6\u53f3\u65f6\u95f4\u3002\u3002(\u5bf9\u4e8e\u5927\u8d1f\u8f7d\u800c\u7269\u7406\u901a\u4fe1\u826f\u597d\u7684\u7f51\u7edc\u800c\u8a00,\u8fd9\u4e2a\u503c\u504f\u9ad8,\u53ef\u4fee\u6539\u4e3a2.\u8fd9\u4e2a\u503c\u4ec5\u4ec5\u662f\u9488\u5bf9\u5bf9\u5916\u7684\u8fde\u63a5,\u5bf9\u8fdb\u6765\u7684\u8fde\u63a5,\u662f\u7531tcp_retries1\u51b3\u5b9a\u7684)
109+OS.net.ipv4.tcp_synack_retries.suggestExplain=\u5bf9\u4e8e\u8fdc\u7aef\u7684\u8fde\u63a5\u8bf7\u6c42SYN\uff0c\u5185\u6838\u4f1a\u53d1\u9001SYN \uff0b ACK\u6570\u636e\u62a5\uff0c\u4ee5\u786e\u8ba4\u6536\u5230\u4e0a\u4e00\u4e2a SYN\u8fde\u63a5\u8bf7\u6c42\u5305\u3002\u8fd9\u662f\u6240\u8c13\u7684\u4e09\u6b21\u63e1\u624b( threeway handshake)\u673a\u5236\u7684\u7b2c\u4e8c\u4e2a\u6b65\u9aa4\u3002\u8fd9\u91cc\u51b3\u5b9a\u5185\u6838\u5728\u653e\u5f03\u8fde\u63a5\u4e4b\u524d\u6240\u9001\u51fa\u7684 SYN+ACK \u6570\u76ee\u3002\u4e0d\u5e94\u8be5\u5927\u4e8e255\uff0c\u9ed8\u8ba4\u503c\u662f5\uff0c\u5bf9\u5e94\u4e8e180\u79d2\u5de6\u53f3\u65f6\u95f4
110+OS.net.ipv4.tcp_retries2.suggestExplain=\u5728\u4e22\u5f03\u6fc0\u6d3b(\u5df2\u5efa\u7acb\u901a\u8baf\u72b6\u51b5)\u7684TCP\u8fde\u63a5\u4e4b\u524d\ufe50\u9700\u8981\u8fdb\u884c\u591a\u5c11\u6b21\u91cd\u8bd5\u3002\u9ed8\u8ba4\u503c\u4e3a15\uff0c\u6839\u636eRTO\u7684\u503c\u6765\u51b3\u5b9a\uff0c\u76f8\u5f53\u4e8e13-30\u5206\u949f(RFC1122\u89c4\u5b9a\uff0c\u5fc5\u987b\u5927\u4e8e100\u79d2).(\u8fd9\u4e2a\u503c\u6839\u636e\u76ee\u524d\u7684\u7f51\u7edc\u8bbe\u7f6e,\u53ef\u4ee5\u9002\u5f53\u5730\u6539\u5c0f,\u6211\u7684\u7f51\u7edc\u5185\u4fee\u6539\u4e3a\u4e865)
111+"OS.vm.overcommit_memory.suggestExplain=vm.overcommit_memory\u6587\u4ef6\u6307\u5b9a\u4e86\u5185\u6838\u9488\u5bf9\u5185\u5b58\u5206\u914d\u7684\u7b56\u7565\uff0c\u5176\u503c\u53ef\u4ee5\u662f0\u30011\u30012
112+0\uff1a (\u9ed8\u8ba4)\u8868\u793a\u5185\u6838\u5c06\u68c0\u67e5\u662f\u5426\u6709\u8db3\u591f\u7684\u53ef\u7528\u5185\u5b58\u4f9b\u5e94\u7528\u8fdb\u7a0b\u4f7f\u7528\uff1b\u5982\u679c\u6709\u8db3\u591f\u7684\u53ef\u7528\u5185\u5b58\uff0c\u5185\u5b58\u7533\u8bf7\u5141\u8bb8\uff1b\u5426\u5219\uff0c\u5185\u5b58\u7533\u8bf7\u5931\u8d25\uff0c\u5e76\u628a\u9519\u8bef\u8fd4\u56de\u7ed9\u5e94\u7528\u8fdb\u7a0b\u30020 \u5373\u662f\u542f\u53d1\u5f0f\u7684overcommitting handle,\u4f1a\u5c3d\u91cf\u51cf\u5c11swap\u7684\u4f7f\u7528,root\u53ef\u4ee5\u5206\u914d\u6bd4\u4e00\u822c\u7528\u6237\u7565\u591a\u7684\u5185\u5b58
113+1\uff1a \u8868\u793a\u5185\u6838\u5141\u8bb8\u5206\u914d\u6240\u6709\u7684\u7269\u7406\u5185\u5b58\uff0c\u800c\u4e0d\u7ba1\u5f53\u524d\u7684\u5185\u5b58\u72b6\u6001\u5982\u4f55\uff0c\u5141\u8bb8\u8d85\u8fc7CommitLimit\uff0c\u76f4\u81f3\u5185\u5b58\u7528\u5b8c\u4e3a\u6b62\u3002\u5728\u6570\u636e\u5e93\u670d\u52a1\u5668\u4e0a\u4e0d\u5efa\u8bae\u8bbe\u7f6e\u4e3a1\uff0c\u4ece\u800c\u5c3d\u91cf\u907f\u514d\u4f7f\u7528swap.
114+2\uff1a \u8868\u793a\u4e0d\u5141\u8bb8\u8d85\u8fc7CommitLimit\u503c"
115+OS.net.ipv4.tcp_rmem.suggestExplain=\u63a5\u6536\u7f13\u5b58\u8bbe\u7f6e\u540ctcp_wmem
116+OS.net.core.wmem_max.suggestExplain=\u6700\u5927\u7684TCP\u6570\u636e\u53d1\u9001\u7f13\u51b2
117+OS.net.core.rmem_max.suggestExplain=\u6700\u5927\u7684TCP\u6570\u636e\u63a5\u6536\u7f13\u51b2
118+OS.net.core.wmem_default.suggestExplain=\u9ed8\u8ba4\u7684\u53d1\u9001\u7a97\u53e3\u5927\u5c0f
119+OS.net.core.rmem_default.suggestExplain=\u9ed8\u8ba4\u7684\u63a5\u6536\u7a97\u53e3\u5927\u5c0f
120+OS.kernel.sem.suggestExplain=
121+OS.vm.min_free_kbytes.suggestExplain=
122+OS.net.core.somaxconn.suggestExplain=\u7528\u6765\u9650\u5236\u76d1\u542c(LISTEN)\u961f\u5217\u6700\u5927\u6570\u636e\u5305\u7684\u6570\u91cf\uff0c\u8d85\u8fc7\u8fd9\u4e2a\u6570\u91cf\u5c31\u4f1a\u5bfc\u81f4\u94fe\u63a5\u8d85\u65f6\u6216\u8005\u89e6\u53d1\u91cd\u4f20\u673a\u5236\u3002web\u5e94\u7528\u4e2dlisten\u51fd\u6570\u7684backlog\u9ed8\u8ba4\u4f1a\u7ed9\u6211\u4eec\u5185\u6838\u53c2\u6570\u7684net.core.somaxconn\u9650\u5236\u5230128\uff0c\u800cnginx\u5b9a\u4e49\u7684NGX_LISTEN_BACKLOG\u9ed8\u8ba4\u4e3a511\uff0c\u6240\u4ee5\u6709\u5fc5\u8981\u8c03\u6574\u8fd9\u4e2a\u503c\u3002\u5bf9\u7e41\u5fd9\u7684\u670d\u52a1\u5668,\u589e\u52a0\u8be5\u503c\u6709\u52a9\u4e8e\u7f51\u7edc\u6027\u80fd
123+OS.net.ipv4.tcp_syncookies.suggestExplain=\u53ea\u6709\u5728\u5185\u6838\u7f16\u8bd1\u65f6\u9009\u62e9\u4e86CONFIG_SYNCOOKIES\u65f6\u624d\u4f1a\u53d1\u751f\u4f5c\u7528\u3002\u5f53\u51fa\u73b0syn\u7b49\u5019\u961f\u5217\u51fa\u73b0\u6ea2\u51fa\u65f6\u8c61\u5bf9\u65b9\u53d1\u9001syncookies\u3002\u76ee\u7684\u662f\u4e3a\u4e86\u9632\u6b62syn flood\u653b\u51fb
124+OS.net.core.netdev_max_backlog.suggestExplain=
125+OS.net.ipv4.tcp_max_syn_backlog.suggestExplain=\u5bf9\u4e8e\u90a3\u4e9b\u4f9d\u7136\u8fd8\u672a\u83b7\u5f97\u5ba2\u6237\u7aef\u786e\u8ba4\u7684\u8fde\u63a5\u8bf7\u6c42\ufe50\u9700\u8981\u4fdd\u5b58\u5728\u961f\u5217\u4e2d\u6700\u5927\u6570\u76ee\u3002\u5bf9\u4e8e\u8d85\u8fc7 128Mb \u5185\u5b58\u7684\u7cfb\u7edf\ufe50\u9ed8\u8ba4\u503c\u662f 1024 \ufe50\u4f4e\u4e8e 128Mb \u7684\u5219\u4e3a 128\u3002\u5982\u679c\u670d\u52a1\u5668\u7ecf\u5e38\u51fa\u73b0\u8fc7\u8f7d\ufe50\u53ef\u4ee5\u5c1d\u8bd5\u589e\u52a0\u8fd9\u4e2a\u6570\u5b57\u3002\u8b66\u544a\ufe57\u5047\u5982\u60a8\u5c06\u6b64\u503c\u8bbe\u4e3a\u5927\u4e8e 1024\ufe50\u6700\u597d\u4fee\u6539include/net/tcp.h\u91cc\u9762\u7684TCP_SYNQ_HSIZE\ufe50\u4ee5\u4fdd\u6301TCP_SYNQ_HSIZE*16(SYN Flood\u653b\u51fb\u5229\u7528TCP\u534f\u8bae\u6563\u5e03\u63e1\u624b\u7684\u7f3a\u9677\uff0c\u4f2a\u9020\u865a\u5047\u6e90IP\u5730\u5740\u53d1\u9001\u5927\u91cfTCP-SYN\u534a\u6253\u5f00\u8fde\u63a5\u5230\u76ee\u6807\u7cfb\u7edf\uff0c\u6700\u7ec8\u5bfc\u81f4\u76ee\u6807\u7cfb\u7edfSocket\u961f\u5217\u8d44\u6e90\u8017\u5c3d\u800c\u65e0\u6cd5\u63a5\u53d7\u65b0\u7684\u8fde\u63a5\u3002\u4e3a\u4e86\u5e94\u4ed8\u8fd9\u79cd\u653b\u51fb\uff0c\u73b0\u4ee3Unix\u7cfb\u7edf\u4e2d\u666e\u904d\u91c7\u7528\u591a\u8fde\u63a5\u961f\u5217\u5904\u7406\u7684\u65b9\u5f0f\u6765\u7f13\u51b2(\u800c\u4e0d\u662f\u89e3\u51b3)\u8fd9\u79cd\u653b\u51fb\uff0c\u662f\u7528\u4e00\u4e2a\u57fa\u672c\u961f\u5217\u5904\u7406\u6b63\u5e38\u7684\u5b8c\u5168\u8fde\u63a5\u5e94\u7528(Connect()\u548cAccept() )\uff0c\u662f\u7528\u53e6\u4e00\u4e2a\u961f\u5217\u5355\u72ec\u5b58\u653e\u534a\u6253\u5f00\u8fde\u63a5\u3002\u8fd9\u79cd\u53cc\u961f\u5217\u5904\u7406\u65b9\u5f0f\u548c\u5176\u4ed6\u4e00\u4e9b\u7cfb\u7edf\u5185\u6838\u63aa\u65bd(\u4f8b\u5982Syn-Cookies/Caches)\u8054\u5408\u5e94\u7528\u65f6\uff0c\u80fd\u591f\u6bd4\u8f83\u6709\u6548\u7684\u7f13\u89e3\u5c0f\u89c4\u6a21\u7684SYN Flood\u653b\u51fb(\u4e8b\u5b9e\u8bc1\u660e)
126+OS.net.ipv4.tcp_fin_timeout.suggestExplain=\u5bf9\u4e8e\u672c\u7aef\u65ad\u5f00\u7684socket\u8fde\u63a5\uff0cTCP\u4fdd\u6301\u5728FIN-WAIT-2\u72b6\u6001\u7684\u65f6\u95f4\u3002\u5bf9\u65b9\u53ef\u80fd\u4f1a\u65ad\u5f00\u8fde\u63a5\u6216\u4e00\u76f4\u4e0d\u7ed3\u675f\u8fde\u63a5\u6216\u4e0d\u53ef\u9884\u6599\u7684\u8fdb\u7a0b\u6b7b\u4ea1
127+OS.kernel.shmall.suggestExplain=
128+OS.kernel.shmmax.suggestExplain=
129+OS.net.ipv4.tcp_sack.suggestExplain=\u4f7f\u7528 Selective ACK\ufe50\u5b83\u53ef\u4ee5\u7528\u6765\u67e5\u627e\u7279\u5b9a\u7684\u9057\u5931\u7684\u6570\u636e\u62a5--- \u56e0\u6b64\u6709\u52a9\u4e8e\u5feb\u901f\u6062\u590d\u72b6\u6001\u3002\u8be5\u6587\u4ef6\u8868\u793a\u662f\u5426\u542f\u7528\u6709\u9009\u62e9\u7684\u5e94\u7b54\uff08Selective Acknowledgment\uff09\uff0c\u8fd9\u53ef\u4ee5\u901a\u8fc7\u6709\u9009\u62e9\u5730\u5e94\u7b54\u4e71\u5e8f\u63a5\u6536\u5230\u7684\u62a5\u6587\u6765\u63d0\u9ad8\u6027\u80fd\uff08\u8fd9\u6837\u53ef\u4ee5\u8ba9\u53d1\u9001\u8005\u53ea\u53d1\u9001\u4e22\u5931\u7684\u62a5\u6587\u6bb5\uff09\u3002(\u5bf9\u4e8e\u5e7f\u57df\u7f51\u901a\u4fe1\u6765\u8bf4\u8fd9\u4e2a\u9009\u9879\u5e94\u8be5\u542f\u7528\uff0c\u4f46\u662f\u8fd9\u4f1a\u589e\u52a0\u5bf9 CPU \u7684\u5360\u7528
130+OS.net.ipv4.tcp_timestamps.suggestExplain=Timestamps \u7528\u5728\u5176\u5b83\u4e00\u4e9b\u4e1c\u897f\u4e2d\ufe50\u53ef\u4ee5\u9632\u8303\u90a3\u4e9b\u4f2a\u9020\u7684sequence \u53f7\u7801\u3002\u4e00\u67611G\u7684\u5bbd\u5e26\u7ebf\u8def\u6216\u8bb8\u4f1a\u91cd\u9047\u5230\u5e26 out-of-line\u6570\u503c\u7684\u65e7sequence \u53f7\u7801(\u5047\u5982\u5b83\u662f\u7531\u4e8e\u4e0a\u6b21\u4ea7\u751f\u7684)\u3002Timestamp \u4f1a\u8ba9\u5b83\u77e5\u9053\u8fd9\u662f\u4e2a '\u65e7\u5c01\u5305'\u3002(\u8be5\u6587\u4ef6\u8868\u793a\u662f\u5426\u542f\u7528\u4ee5\u4e00\u79cd\u6bd4\u8d85\u65f6\u91cd\u53d1\u66f4\u7cbe\u786e\u7684\u65b9\u6cd5\uff08RFC 1323\uff09\u6765\u542f\u7528\u5bf9 RTT \u7684\u8ba1\u7b97\uff1b\u4e3a\u4e86\u5b9e\u73b0\u66f4\u597d\u7684\u6027\u80fd\u5e94\u8be5\u542f\u7528\u8fd9\u4e2a\u9009\u9879\u3002)
131+OS.vm.extfrag_threshold.suggestExplain=
132+OS.vm.overcommit_ratio.suggestExplain=\u8fd9\u4e2a\u53c2\u6570\u503c\u53ea\u6709\u5728vm.overcommit_memory=2\u7684\u60c5\u51b5\u4e0b\uff0c\u8fd9\u4e2a\u53c2\u6570\u624d\u4f1a\u751f\u6548
133+OS.MTU.suggestExplain=
134+DB.bgwriter_delay.suggestExplain=\u5728\u6570\u636e\u5199\u538b\u529b\u6bd4\u8f83\u5927\u7684\u573a\u666f\u4e2d\u53ef\u4ee5\u5c1d\u8bd5\u51cf\u5c0f\u8be5\u503c\u4ee5\u964d\u4f4echeckpoint\u7684\u538b\u529b
135+DB.bgwriter_thread_num.suggestExplain=
136+DB.max_io_capacity.suggestExplain=
137+DB.log_min_duration_statement.suggestExplain=\u8bbe\u7f6e\u4e3a250\uff0c\u6240\u6709\u8fd0\u884c\u65f6\u95f4\u4e0d\u77ed\u4e8e250ms\u7684SQL\u8bed\u53e5\u90fd\u4f1a\u88ab\u8bb0\u5f55\u3002\u8bbe\u7f6e\u4e3a0\uff0c\u8f93\u51fa\u6240\u6709\u8bed\u53e5\u7684\u6301\u7eed\u65f6\u95f4\u3002\u8bbe\u7f6e\u4e3a-1\uff0c\u5173\u95ed\u6b64\u529f\u80fd
138+DB.log_duration.suggestExplain=\u8bbe\u7f6e\u4e3aoff\uff0c\u8be5\u9009\u9879\u4e0elog_min_duration_statement\u7684\u4e0d\u540c\u4e4b\u5904\u5728\u4e8elog_min_duration_statement\u5f3a\u5236\u8bb0\u5f55\u67e5\u8be2\u6587\u672c\u3002\u8bbe\u7f6e\u4e3aon\u5e76\u4e14log_min_duration_statement\u5927\u4e8e\u96f6\uff0c\u8bb0\u5f55\u6240\u6709\u6301\u7eed\u65f6\u95f4\uff0c\u4f46\u662f\u4ec5\u8bb0\u5f55\u8d85\u8fc7\u9608\u503c\u7684\u8bed\u53e5\u3002\u8fd9\u53ef\u7528\u4e8e\u5728\u9ad8\u8d1f\u8f7d\u60c5\u51b5\u4e0b\u641c\u96c6\u7edf\u8ba1\u4fe1\u606f
139+DB.track_stmt_stat_level.suggestExplain=
140+DB.track_stmt_retention_time.suggestExplain=
141+DB.enable_thread_pool.suggestExplain=on\u8868\u793a\u5f00\u542f\u7ebf\u7a0b\u6c60\u529f\u80fd\u3002off\u8868\u793a\u4e0d\u5f00\u542f\u7ebf\u7a0b\u6c60\u529f\u80fd
142+DB.thread_pool_attr.suggestExplain=
143+DB.log_statement.suggestExplain=none\u8868\u793a\u4e0d\u8bb0\u5f55\u8bed\u53e5\u3002ddl\u8868\u793a\u8bb0\u5f55\u6240\u6709\u7684\u6570\u636e\u5b9a\u4e49\u8bed\u53e5\uff0c\u6bd4\u5982CREATE\u3001ALTER\u548cDROP\u8bed\u53e5\u3002mod\u8868\u793a\u8bb0\u5f55\u6240\u6709DDL\u8bed\u53e5\uff0c\u8fd8\u5305\u62ec\u6570\u636e\u4fee\u6539\u8bed\u53e5INSERT\u3001UPDATE\u3001DELETE\u3001TRUNCATE\u548cCOPY FROM \u3002all\u8868\u793a\u8bb0\u5f55\u6240\u6709\u8bed\u53e5\uff0cPREPARE\u3001EXECUTE\u548cEXPLAIN ANALYZE\u8bed\u53e5\u4e5f\u540c\u6837\u88ab\u8bb0\u5f55
144+DB.log_error_verbosity.suggestExplain=terse\u4ee3\u8868\u8f93\u51fa\u4e0d\u5305\u62ecDETAIL\u3001HINT\u3001QUERY\u53caCONTEXT\u9519\u8bef\u4fe1\u606f\u7684\u8bb0\u5f55\u3002verbose\u4ee3\u8868\u8f93\u51fa\u5305\u62ecSQLSTATE\u9519\u8bef\u4ee3\u7801\u3001\u6e90\u4ee3\u7801\u6587\u4ef6\u540d\u3001\u51fd\u6570\u540d\u53ca\u4ea7\u751f\u9519\u8bef\u6240\u5728\u7684\u884c\u53f7\u3002
145+default\u4ee3\u8868\u8f93\u51fa\u5305\u62ecDETAIL\u3001HINT\u3001QUERY\u53caCONTEXT\u9519\u8bef\u4fe1\u606f\u7684\u8bb0\u5f55\uff0c\u4e0d\u5305\u62ecSQLSTATE\u9519\u8bef\u4ee3\u7801 \u3001\u6e90\u4ee3\u7801\u6587\u4ef6\u540d\u3001\u51fd\u6570\u540d\u53ca\u4ea7\u751f\u9519\u8bef\u6240\u5728\u7684\u884c\u53f7"
146+DB.log_min_messages.suggestExplain=\u6709\u6548\u503c\u6709debug\u3001debug5\u3001debug4\u3001debug3\u3001debug2\u3001debug1\u3001info\u3001log\u3001notice\u3001warning\u3001error\u3001fatal\u3001panic\u3002
147+DB.log_min_error_statement.suggestExplain=\u6709\u6548\u503c\u6709debug\u3001debug5\u3001debug4\u3001debug3\u3001debug2\u3001debug1\u3001info\u3001log\u3001notice\u3001warning\u3001error\u3001fatal\u3001panic\u3002
@@ -18,7 +18,7 @@ import lombok.NoArgsConstructor;
18/**18/**
19 * HistogramToHeatmap19 * HistogramToHeatmap
20 * 20 *
21- * @formatter:off21+ * <pre>
22Sampling run queue length... Hit Ctrl-C to end.22Sampling run queue length... Hit Ctrl-C to end.
23 23 
2412:16:182412:16:18
@@ -29,7 +29,7 @@ Sampling run queue length... Hit Ctrl-C to end.
29 3 : 137 |*************************** |29 3 : 137 |*************************** |
30 4 : 93 |****************** |30 4 : 93 |****************** |
31 5 : 38 |******* |31 5 : 38 |******* |
32-@formatter:on32+ * </pre>
33 */33 */
34public class HistogramToHeatmap {34public class HistogramToHeatmap {
35 private static final String timeRegex = "([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]):?";35 private static final String timeRegex = "([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]):?";