influxdb一般情况下比较稳定,但是随着数据量越来越大,也会出现一些性能问题,需要进行一些调优。我目前遇到的关于influxdb的性能问题大体上可以分为两类
CPU持续居高不下
内存持续居高不下,并伴随着较高的iowait
下面分别来讨论我当时的处理方法。
CPU持续居高不下
当时遇到的现象是,influxdb进程的CPU利用率持续居高不下,查询数据的速度很慢。经过分析,最终定位到influxdb.conf配置文件中的一个参数
# The maximum time a query will is allowed to execute before being killed by the system. This limit
# can help prevent run away queries. Setting the value to 0 disables the limit.
# query-timeout = "0"
我认为这简直是influxdb的一个bug,默认情况下查询数据居然没有超时时间。一般情况下大家都是在grafana上展示influxdb的数据,如果一次查询了非常多的数据,那么这个查询就会执行很长时间,如果这种大的查询比较多的话,influxdb就会耗费几乎所有的CPU来做这些数据查询,并且其它小的查询也会受到影响。
我的做法是设置了一个60秒的超时时间
query-timeout = "60s"
这样的话,大查询如果60秒内结束不了,会超时并结束,不影响后续的查询。
内存持续居高不下,并伴随