怎样避免写出来的网络服务程序受磁盘 IO 抖动影响最小?

2020-02-06 23:49:49 +08:00
 moonsn
如题,现在有一个 rpc 服务,在一些磁盘 IO 抖动的机器上,服务相应时间也跟着抖动。服务本身是很少读写磁盘的。
2090 次点击
所在节点    C++
3 条回复
yidinghe
2020-02-06 23:51:12 +08:00
没有其他约束的情况下,把磁盘内容放到内存中是显而易见的做法。
codehz
2020-02-07 00:04:02 +08:00
不考虑缓存文件的情况下,方案如:
1 上多线程(或者用 glibc 的 aio,也是多线程实现
2 用 native aio (需要 Direct IO 支持,和文件系统有关系,然后实际需要不少技巧才能发挥作用
3 用 io-uring 的 api (需要新内核支持

当然最好还是自己缓存一下文件,做个 LRU 一类的缓存

其实合理的情况应该是上数据库(
YouLMAO
2021-01-30 01:54:09 +08:00
一定是你没有用异步线程池吧,阻塞了吧

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

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

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

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

© 2021 V2EX