经过大量工作后,Redis服务器的CPU闲置时保持60%的速度

时间:2019-07-17 08:36:04

标签: redis stackexchange.redis redisearch

我正在为小型VM上的带RediSearch模块的IoT项目Redis Server进行测试。

我已经使用StackExchange Redis客户端库编译了一个测试.NET Core控制台应用程序,该库在一个简单的同步for循环中创建了1M文档。

每个文档都是通过反映c#类/实体完成的attr /值对序列化,具有许多属性(其中一些索引为TAG或NUMERIC RediSearch字段)。

VM非常小,只有2GB RAM / 2个2.0 GHz内核Linux Debian 9服务器,我还想看看RAM的使用量如何增长。

到目前为止,这个过程花了15分钟才能完成,对我来说非常好(每秒创建和建立索引大约1300个实体),RAM毫无问题地增长到1.7 GB。

然后我尝试通过运行另一个简单的同步来利用FT.DEL ... DD RediSearch命令循环删除100万个集合中的600k(将400k文档保留在内存中)。

此循环大约需要7分钟才能完成。

问题在于,现在服务器的redis-server进程将一个核心固定在60%。

删除密钥后,我等待了一段时间,以查看是否有任何CPU密集型后台进程(例如垃圾回收)需要一些时间才能完成,但看来CPU从未被释放。

服务器现在已闲置了4多个小时,一个CPU仍处于60%的状态。

VM:Linux Debian 9 x64 Redis的:5.0.3 RediSearch:1.6.0(从源代码本地编译)

redis-stat仪表板快照:

Redis Stat

在提示时从htop捕获快照:

Redis Stat

dbsize的redis-cli输出:

127.0.0.1:6379> dbsize
(integer) 400005

ft.info在相关索引上的redis-cli输出:

127.0.0.1:6379> ft.info Device
 1) index_name
 2) Device
 3) index_options
 4) 1) "NOFREQS"
    2) "NOOFFSETS"
 5) fields
 6) 1) 1) SerialNumber
       2) type
       3) TAG
       4) SEPARATOR
       5) ,
       6) SORTABLE
    2) 1) Node
       2) type
       3) TAG
       4) SEPARATOR
       5) ,
       6) SORTABLE
    3) 1) NexusNode
       2) type
       3) TAG
       4) SEPARATOR
       5) ,
       6) SORTABLE
    4) 1) NeedsCfgRefresh
       2) type
       3) NUMERIC
       4) SORTABLE
 7) num_docs
 8) "400000"
 9) max_doc_id
10) "999999"
11) num_terms
12) "0"
13) num_records
14) "551411"
15) inverted_sz_mb
16) "17592186044415.381"
17) total_inverted_index_blocks
18) "20001"
19) offset_vectors_sz_mb
20) "0"
21) doc_table_size_mb
22) "92.400358200073242"
23) sortable_values_size_mb
24) "123.97753715515137"
25) key_table_size_mb
26) "8.7738475799560547"
27) records_per_doc_avg
28) "1.3785274999999999"
29) bytes_per_record_avg
30) "33453710705280.727"
31) offsets_per_term_avg
32) "0"
33) offset_bits_per_record_avg
34) "-nan"
35) gc_stats
36) 1) current_hz
    2) "99"
    3) bytes_collected
    4) "3648584"
    5) effectiv_cycles_rate
    6) "0.17567907444668007"
37) cursor_stats
38) 1) global_idle
    2) (integer) 0
    3) global_total
    4) (integer) 0
    5) index_capacity
    6) (integer) 128
    7) index_total
    8) (integer) 0

ft.config get *的redis-cli输出:

127.0.0.1:6379> ft.config get *
 1) 1) EXTLOAD
    2) (nil)
 2) 1) SAFEMODE
    2) false
 3) 1) NOGC
    2) false
 4) 1) MINPREFIX
    2) 2
 5) 1) FORKGC_SLEEP_BEFORE_EXIT
    2) 0
 6) 1) MAXDOCTABLESIZE
    2) 1000000
 7) 1) MAXEXPANSIONS
    2) 200
 8) 1) TIMEOUT
    2) 500
 9) 1) INDEX_THREADS
    2) 8
10) 1) SEARCH_THREADS
    2) 20
11) 1) FRISOINI
    2) (nil)
12) 1) ON_TIMEOUT
    2) return
13) 1) GCSCANSIZE
    2) 100
14) 1) MIN_PHONETIC_TERM_LEN
    2) 3
15) 1) GC_POLICY
    2) default
16) 1) FORK_GC_RUN_INTERVAL
    2) 10

有人遇到过类似的问题吗?

0 个答案:

没有答案