文件夹监控的通讯方式到底让什么资源瓶颈了?

300 天前
 chen0520

大概架构是这样,A 进程监控事件,然后产生图片到一个文件夹,B 进程监控文件夹,并记录生成的事件,其中涉及到转换 bmp 文件为 jpg (源图太大),实际操作过程中,经常会出现图片丢失的情况,或者说源图产生但是图片是空,然后并发高的时候整个进程都很卡,ctrl-C 要好久进程才能结束,卡的时候甚至 ssh 都登录不了,第一次碰到这情况,咋回事呢?

1828 次点击
所在节点    Go 编程语言
9 条回复
chen0520
300 天前
卡的时候其实 ls 命令也要卡半天才会出结果
dode
300 天前
把这个目录调整到内存目录下去吧,尽快清理不用的文件,注意临界文件没有完全写入完成的问题
dode
300 天前
多个硬盘隔离 IO 读写请求
fuxkcsdn
299 天前
所有图片都在一个文件夹内?有做二、三级目录吗?没有的话,当文件多的时候肯定会卡
flyqie
299 天前
硬盘 io 导致的问题?
documentzhangx66
299 天前
做开发要经常检查 CPU 使用率、io 负载、网络负载等。

你这种架构需要限制最大事务数量,超过的直接丢掉,或者改为多级架构。前级只做 path str 处理,后级再根据整机负载,慢慢处理图片。
bwangel
299 天前
我之前用 go 的 fsnotify 实现监听文件功能的时候,也遇到过使用 CPU 太高的问题。后来的解决方案是加个定时器,隔 10S 再批量处理一下事件,CPU 使用率就降下去了

https://github.com/gohugoio/hugo/blob/387c5f60f97141d638327f84ee426fb44f6c554e/watcher/batcher.go#L60-L78

hugo 中有个 batcher ,也是类似的思路。批量汇集事件之后再处理。
bwangel
299 天前
#7

改进之后,监听的目录没有 exclude node_modules, 监听了几万个文件,也没有太大的性能问题。

但我的逻辑很简单,监听到文件修改之后发个 http 请求,没有你的逻辑复杂。
chen0520
297 天前
@flyqie io 的话,排查步骤一般是啥,用啥命令啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/957488

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX