ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

标题: kangle 3311中重启进程后打不开的解决办法 内存索引缓存数据写入机械硬盘过慢save cache index now... [打印本页]

作者: 小樱    时间: 2021/12/8 06:55
标题: kangle 3311中重启进程后打不开的解决办法 内存索引缓存数据写入机械硬盘过慢save cache index now...
kangle 3311中重启进程后打不开的解决办法 内存索引缓存数据写入机械硬盘过慢save cache index now...

分析,日志输出
  1. Wed Dec  8 06:39:36|save cache index now...
复制代码


可以观察到由于缓存信息过多,在保存索引,然后观察top wa状态,发现占用10-20%左右
在观察iotop,可以看到磁盘性能已经用尽,解决办法,放弃索引保存,立即杀死进程,或者更换固态盘
Total DISK READ: 720.48 K/s | Total DISK WRITE: 23.62 K/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                           
7789 be/4 root      720.48 K/s  563.00 K/s  0.00 % 99.99 % kangle


可以分析到,正在写入的文件名为index.sqt3-journal
-rw-r--r--   1 root root 1045036032 12月  8 06:57 index.sqt3
-rw-r--r--   1 root root    6169712 12月  8 06:57 index.sqt3-journal

[root@localhost kangle]# du -sh index*
4.0K        index
4.0K        index.scan
997M        index.sqt3
120K        index.sqt3-journal
[root@localhost kangle]# du -sh index*
4.0K        index
4.0K        index.scan
997M        index.sqt3
6.5M        index.sqt3-journal
[root@localhost kangle]#


通过确认,,确实是在写缓存,是把内存缓存中的数据写进磁盘,内存分配的过高了,就导致了毛病
  1. ll /proc/进程pid/fd
复制代码


杀死进程并且重新启动kangle命令
  1. /vhs/kangle/bin/kangle -q;killall -9 kangle;sleep 3;/vhs/kangle/bin/kangle
复制代码


或者有耐心,,,可以等跑完索引,如果强制杀死会导致部分未写入索引状态的磁盘缓存信息丢失,需要使用3311中磁盘缓存扫描恢复该未及时写入导致丢失的部分缓存信息

或者等待后续版本完善,索引有应当直接全读到内存中,写入索引过程都应当在内存完成,然后在把文件复制到磁盘,并且重启的时候应当丢弃掉内存中的数据更科学?
再不然这部分做成工作线程异步处理也可以,,不过貌似占用IO比较大也不太适合这样搞异步,机械盘那烂io可能会导致正常web访问卡住


2023年1月10日补充
3.6.0版本已修复
https://github.com/keengo99/kangle/commit/8ff4f4c7a5fc775f04f32d58b2e44f77f86f1027






欢迎光临 ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com (https://bbs.itzmx.com/) Powered by Discuz! X3.4