【TDengine 使用环境】
生产环境 /测试/ Poc/预生产环境
【TDengine 版本】
3.4
【操作系统以及版本】
centos7
【部署方式】容器/非容器部署
非容器部署
【集群节点数】
5
【集群副本数】
【描述业务影响】
【问题复现路径/shan】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】
【报错完整截图】(不要大段的粘贴报错代码,论坛直接看报错代码不直观)
【TDengine 使用环境】
生产环境 /测试/ Poc/预生产环境
【TDengine 版本】
3.4
【操作系统以及版本】
centos7
【部署方式】容器/非容器部署
非容器部署
【集群节点数】
5
【集群副本数】
【描述业务影响】
【问题复现路径/shan】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】
【报错完整截图】(不要大段的粘贴报错代码,论坛直接看报错代码不直观)
客户端性能没有问题,但是服务端cpu高,全是物理机部署,五台24c256g的物理机的集群,上面没有其他组件
无模式写入如果每条或少量几条记录就发送一次HTTP/UDP请求,网络和解析开销会非常大,导致CPU飙升。
taos.cfg)numOfCommitThread (落盘线程)作用:控制数据从内存写入磁盘的线程数。
调优建议:如果CPU高且写入延迟不稳定,可以适当调高,例如设置为 8-16(根据CPU核心数)。
stt_trigger (处理小批量写入合并)作用:无模式写入往往产生大量小的、不规则的写入,此参数控制内存中“小文件合并”的触发时机。
调优建议:适当调高此值(例如从默认的1调到 8或16),可以让更多小写入在内存中合并后再落盘,减少磁盘碎片和CPU开销。
buffer (写入缓存大小)作用:每个VNode的写入缓存。您提到调整后内存没变,可能是数值设置仍偏小或未重启。
调优建议:在内存充裕的前提下(总256G,使用9G),可以将每个VNode的buffer从默认的256MB提升至 512MB或1GB。这能有效吸收写入高峰,减少缓存写满导致的背压和CPU上下文切换。
感谢,麻烦再帮我参考一下;我经过反复测试,sql写8w每秒都没问题,但是无模式写入直接cpu就80%,而且写入速度只有4-8k/s,看服务端显示是taosadapter cpu占比很高
我无模式写入的那个数据库,设置了60个vgroup,buffer设置成4096了;落盘线程设置的是20个
无模式写入每次是200条数据一批,写入
taosadapter.toml 这个配置文件是否有可以参数调优的优化空间
我使用的是默认配置taosadapter.toml
taosadapter.toml 的参数修改成如下:
[http]
max_open_conns = 1024 # 最大并发连接数,默认可能偏小,建议1024或更高
idle_timeout = 300 # 连接空闲超时(秒)
[sml]
worker = 20 # 处理无模式写入的工作线程数,您有5台24核机器,可设20-40
batchSize = 10000 # 单批次最大处理记录数,建议10000
flushInterval = “5s” # 刷新间隔
log_level = “warn” # 减少日志输出,日志过多会显著影响性能
worker,batchSize,flushInterval这三个参数有;其他的参数我那配置文件里面都没有;
我是3.4版本的开源版;这正常吗?我先把这些参数都放到taosadapter.toml试一下;
其他配置加了启动不了;我先改这些看看worker,batchSize,flushInterval;重启了taosadapter
debug = true
taosConfigDir = “/etc/taos”
port = 6041
httpCodeServerError = false
smlAutoCreateDB = false
instanceId = 32
#maxSyncConcurrentLimit = 0
#maxAsyncConcurrentLimit = 0
#rejectQuerySqlRegex = [‘(?i)^drop\s+database\s+.‘,’(?i)^alter\s+table\s+.’,‘(?i)^select\s+.from\s+testdb.’]
[register]
#instance = “tdpro05.zoomlion.com:6041”
#description = “”
#duration = 10
#expire = 30
[request]
#queryLimitEnable = false
#excludeQueryLimitSql = [“select 1”,“select server_version()”]
#excludeQueryLimitSqlRegex = [‘(?i)^select\s+.from\s+information_schema.’]
[request.default]
queryLimit = 0
queryWaitTimeout = 900
queryMaxWait = 0
#[request.users.root]
#queryLimit = 100
#queryWaitTimeout = 200
#queryMaxWait = 10
[cors]
allowAllOrigins = true
[pool]
maxWait = 0
waitTimeout = 60
[ssl]
enable = false
certFile = “”
keyFile = “”
[log]
path = “/var/log/taos”
level = “warning”
rotationCount = 30
keepDays = 30
rotationSize = “1GB”
compress = false
reservedDiskSize = “1GB”
enableSqlToCsvLogging = false
#Enable logging of HTTP SQL queries.
enableRecordHttpSql = false
sqlRotationCount = 2
sqlRotationTime = “24h”
sqlRotationSize = “1GB”
[monitor]
disable = true
collectDuration = “3s”
incgroup = false
pauseQueryMemoryThreshold = 70
pauseAllMemoryThreshold = 80
identity = “”
[uploadKeeper]
enable = true
url = “http://127.0.0.1:6043/adapter_report”
interval = “15s”
timeout = “5s”
retryTimes = 3
retryInterval = “5s”
[opentsdb]
enable = true
[influxdb]
enable = true
[statsd]
enable = false
port = 6044
db = “statsd”
#user = “”
#password = “”
#token = “”
worker = 20
gatherInterval = “5s”
protocol = “udp4”
maxTCPConnections = 250
tcpKeepAlive = false
allowPendingMessages = 50000
deleteCounters = true
deleteGauges = true
deleteSets = true
deleteTimings = true
[collectd]
enable = false
port = 6045
db = “collectd”
#user = “”
#password = “”
#token = “”
worker = 20
[opentsdb_telnet]
enable = false
maxTCPConnections = 250
tcpKeepAlive = false
dbs = [“opentsdb_telnet”, “collectd”, “icinga2”, “tcollector”]
ports = [6046, 6047, 6048, 6049]
#user = “”
#password = “”
#token = “”
batchSize = 10000
flushInterval = “5s”
[node_exporter]
enable = false
db = “node_exporter”
#user = “”
#password = “”
#token = “”
urls = [“http://tdpro05.zoomlion.com:9100”]
responseTimeout = “5s”
httpUsername = “”
httpPassword = “”
httpBearerTokenString = “”
caCertFile = “”
certFile = “”
keyFile = “”
insecureSkipVerify = true
gatherDuration = “5s”
[prometheus]
enable = true
[open_metrics]
enable = false # Enable OpenMetrics data collection
#user = “”
#password = “”
#token = “”
dbs = [“open_metrics”] # Target database names for OpenMetrics data
urls = [“http://tdpro05.zoomlion.com:9100”] # OpenMetrics endpoints to scrape
responseTimeoutSeconds = [5] # HTTP response timeout in seconds for OpenMetrics scraping
httpUsernames = # Basic auth usernames for protected OpenMetrics endpoints
httpPasswords = # Basic auth passwords for protected OpenMetrics endpoints
httpBearerTokenStrings = # Bearer tokens for OpenMetrics endpoint authentication
caCertFiles = # Paths to CA certificate files for TLS verification
certFiles = # Paths to client certificate files for mTLS
keyFiles = # Paths to private key files for mTLS
insecureSkipVerify = true # Skip TLS certificate verification (insecure)
gatherDurationSeconds = [5] # Interval in seconds between OpenMetrics scrapes
ttl = # Time-to-live for OpenMetrics data (0=no expiration)
ignoreTimestamp = false # Use server timestamp instead of metrics timestamps
我的taosadapter.toml